你如何使用非默认构造函数的成员?

我有两个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。