1

随意编辑标题我不知道如何表达这个。

我试图弄清楚如何在另一个类中实例化一个类的构造函数而不是默认值。我的意思是这个...

class A
{
public:
    A(){cout << "i get this default constructor when I create a B" << endl;}
    A(int i){cout << "this is the constructor i want when I create a B" << endl;}
};

class B
{
    A a;
};

int main()
{
    B *ptr = new B;
    return 0;
}

我已经做了一些搜索,但我没有看到一种方法来做我想做的事。我想也许在 B 的声明中我可以做到A a(5),但这不起作用。

谢谢

4

1 回答 1

10

您可以使用构造函数初始化列表来做到这一点(您可能还想查看这个问题和其他类似的问题)。

这意味着您将不得不手动编写一个构造函数B

class B
{
    A a;

    public: B() : a(5) {}
};

看到它在行动

于 2012-08-30T23:13:45.257 回答