Jon Berndt wrote: > I have a situation where I am getting an error and I am not sure why. I have > a class > MyClass that has a copy constructor. The class has a private member that is a > const > pointer (the pointer is constant - not what the pointer points to): > > class MyClass { > public: > MyClass(const MyClass &mc); // copy constructor > > private: > AnotherClass* const ptrToAnotherClass; > > } > > The copy constructor needs to copy the const element ptrToAnotherClass to be > complete. I > do it like this: > > MyClass::MyClass(const MyClass &mc) : > ptrToAnotherClass(mc.ptrToAnotherClass) > { > // other assignments > } > > This gives me an odd error: > > non-static const member `AnotherClass* const ptrToAnotherClass', can't use > default > assignment operator > > If I remove the const specifier from the declaration for ptrToAnotherClass, > and then move > the assignment at the copy constructor into the code (instead of doing the > "const thing" > in the initializer list), then the compile works. > > Any suggestions?
I think it complains the class has no constructor other than the copy one. you should try to add one : class MyClass { public: MyClass(AnotherClass *p); // constructor MyClass(const MyClass &mc); // copy constructor private: AnotherClass* const ptrToAnotherClass; } MyClass::MyClass(AnotherClass *p) : ptrToAnotherClass(p) { // other assignments } -Fred _______________________________________________ Flightgear-devel mailing list [EMAIL PROTECTED] http://mail.flightgear.org/mailman/listinfo/flightgear-devel 2f585eeea02e2c79d7b1d8c4963bae2d