如何在另一个class中构造一个class? (简单代码)

How to construct a class within another class? (simple code)

我不知道在 ??? 位置放什么。这是代码:

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

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

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

如果您需要一些背景知识,class A 是采用按钮标题矢量的菜单,class B 是 MenuState superclass,它管理菜单和一些附加的东西。还是我的设计有问题?

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

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

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

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