TITLE: New definition of default constructor PROBLEM: scsr91@csc.liv.ac.uk (Mr. J.A. Coyne) class compound { basic * array; // pointer to class basic public: compound(); // class constructor function }; compound::compound() { array = new basic[10]; } class basic { int * vector; public: basic(int =5) ; }; basic::basic(int size) { vector = new int[size]; } The error message I recieve is : default arguments for constructor for array of class basic(2005) RESPONSE: steve@taumet.com (Steve Clamage) This is an area where the language has changed. An array of objects with a constructor require the "default constructor". It used to be that the "default constructor" was one which had no parameters, and a constructor with all parameters defaulted was not a substitute. The newer language rule is that the "default constructor" is one which does not require arguments, meaning that your code is now legal. The cfront 2.1 compiler followed the old rule. A workaround is to make two constructors: basic() { vector = new int[5]; } basic(int size) { vector = new int[size]; }