如何在另一个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" })
{
}
我不知道在 ??? 位置放什么。这是代码:
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" })
{
}