This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

error in new'd array of objects


Hi,
The following code fails on the line a=new A[2](1,false);
becuase the compiler is trying to call a contructor
with a bool parameter.  Which does not exist.  Some
folks say that this construct is invalid C++ (yes it is),
BUT it is a GNU extension according to cp/parse.y
and it fails.  With the -pedantic option a warning 
"initialization in array new" is given (which is correct).

#include <stdio.h>

class A {
public:
	A(bool b) { printf("dooh\n"); }
	A(int a, bool b) { printf("cool\n"); }
};

main() {
	A* a;
	a = new A[2](1,false);
}

this code prints
dooh
dooh
and should print
cool
cool

If I change the line to a = new A[2] = { A(1,false), A(1,false) };
I get
cool
cool
which is correct.  With -pedantic I get the follwoing warning
"ANSI C++ forbids initialization of new expression with '='"
"initialization in array new"
whereas the previous line just gave the second warning.  I
hope this helps someone fine the error.  Either by removing
the ability to call a non-default constructor on new array
or by fixing it so that it works.

Cheers,
Paul Kendall
Product Development Manager
Orion Systems New Zealand Ltd



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]