你如何使用非默认构造函数的成员?
我有两个class
class a { public: a(int i); }; class b { public: b(); //Gives me an error here, because it tries to find constructor a::a() a aInstance; }
我怎样才能得到它,使aInstance实例化(int我),而不是试图寻找一个默认的构造函数? 基本上,我想从b的构造函数中控制a的构造函数的调用。
您需要在构造函数初始值设定项列表中明确调用(int):
b() : aInstance(3) {}
其中3是您想要使用的初始值。 虽然它可以是任何int。 请参阅有关订单和其他注意事项的重要注释的注释。
使用初始化列表:
b::b() : aInstance(1) {}
只需使用一个像这样定义的构造函数:
class b { public: b() : aInstance(5) {} a aInstance; };
我认为你应该使用一个像'a'的指针:
class b { public: b() : aInstance(new a(5)) {} a *aInstance; };
这样你将有定义的行为。 当然,你需要在析构函数中释放* aInstance。