如何在另一个类中构建一个类? (简单代码)

时间:2015-01-27 19:43:13

标签: c++ constructor initialization

我不知道该在 ??? 点放什么。这是代码:

class A
{
    public:
        A(std::vector <std::string> init);
}

class B
{
    public:
        B();
    private:
        A a;
}

B::B() : a(???)
{
}

如果你想要一些背景,A类是带有按钮标题向量的菜单,而B类是管理菜单和其他一些东西的MenuState超类。或者只是我的设计存在缺陷?

1 个答案:

答案 0 :(得分:4)

只需在std::vector<std::string>()写下???。这样你就会有一个空列表。否则,如果你想在构造时填写它,你可以在那里写一个函数调用,如generateButtonTitles(),并在适当的位置定义该函数。

B::B() : a(generateButtonTitles())
{
}

如果您使用符合C ++ 11的编译器,那么您还可以通过以下方式传递初始化列表:

B::B() : a({ "File", "Edit", "Options", "Help" })
{
}