我有一个类,其中有几个类类型的数据成员。当声明时,我不希望调用这些成员的构造函数,所以我试图显式地保留对象的指针。
我想也许我可以这样做,在初始化数据成员时立即调用构造函数:
但是我希望
这是我在尝试编译时遇到的错误:
我是不是在用正确的方法,但是语法错了?还是我应该从另一个角度来解决这个问题?
我想也许我可以这样做,在初始化数据成员时立即调用构造函数:
class MyClass {
public:
MyClass(int n);
private:
AnotherClass another(100); // Construct AnotherClass right away!
};
但是我希望
MyClass
的构造函数调用AnotherClass
的构造函数。以下是我的代码示例:
BigMommaClass.h
#include "ThingOne.h"
#include "ThingTwo.h"
class BigMommaClass {
public:
BigMommaClass(int numba1, int numba2);
private:
ThingOne* ThingOne;
ThingTwo* ThingTwo;
};
BigMommaClass.cpp
#include "BigMommaClass.h"
BigMommaClass::BigMommaClass(int numba1, int numba2) {
this->ThingOne = ThingOne(100);
this->ThingTwo = ThingTwo(numba1, numba2);
}
这是我在尝试编译时遇到的错误:
g++ -Wall -c -Iclasses -o objects/BigMommaClass.o classes/BigMommaClass.cpp
In file included from classes/BigMommaClass.cpp:1:0:
classes/BigMommaClass.h:12:8: error: declaration of âThingTwo* BigMommaClass::ThingTwoâ
classes/ThingTwo.h:1:11: error: changes meaning of âThingTwoâ from âclass ThingTwoâ
classes/BigMommaClass.cpp: In constructor âBigMommaClass::BigMommaClass(int, int)â:
classes/BigMommaClass.cpp:4:30: error: cannot convert âThingOneâ to âThingOne*â in assignment
classes/BigMommaClass.cpp:5:37: error: â((BigMommaClass*)this)->BigMommaClass::ThingTwoâ cannot be used as a function
make: *** [BigMommaClass.o] Error 1
我是不是在用正确的方法,但是语法错了?还是我应该从另一个角度来解决这个问题?
new
,但是有更好的替代方法)。然而,手头的问题可以通过成员初始化器来解决。 - chris