C++ 初始化类中的向量
是否可以初始化sruct或类中的向量。下面是一个我想让它工作的例子C++ 初始化类中的向量,c++,C++,是否可以初始化sruct或类中的向量。下面是一个我想让它工作的例子 class MenuItem { std::string name; // Name of menu item void (*func)(); // Function of menu item MenuPage* subPage; // Pointer to submenu }; class MenuPage { std::string menu
class MenuItem {
std::string name; // Name of menu item
void (*func)(); // Function of menu item
MenuPage* subPage; // Pointer to submenu
};
class MenuPage {
std::string menuTitle;
std::vector<MenuItem> menuItems;
};
static const MenuPage menuMain = {
"Main menu",
{{ "Item1", 0, 0 },
{ "Item2", 0, 0 },
{ "Item3", 0, 0 }}
};
类菜单项{
std::string name;//菜单项的名称
void(*func)(;//菜单项的函数
MenuPage*子页面;//指向子菜单的指针
};
类菜单页{
std::字符串菜单项;
std::向量菜单项;
};
静态常量菜单页菜单名={
“主菜单”,
{{“Item1”,0,0},
{“Item2”,0,0},
{“Item3”,0,0}
};
此结构应表示windows中的动态控制台菜单。
我使用单例模式访问菜单。MenuPage*类型的membervar保存为对象中的菜单入口点
因此,如果不可能,您可以建议哪些替代方法?在C++11中,您可以完全做到这一点(或者至少,如果类成员是公共的,您可以做到这一点)
如果你被困在过去,那么它更混乱;要么编写一个函数来创建并返回向量,要么使用类似于库的东西。将这些成员设置为public,它将在C++11中初始化。否则,您可以使用初始值设定项列表和构造函数:
class MenuPage {
std::string menuTitle;
std::vector<MenuItem> menuItems;
public:
MenuPage (std::string s, std::vector<MenuItem> m) :
menuTitle(s), menuItems(m) {}
};
static const MenuPage menuMain (
"Main menu",
{{ "Item1", 0, 0 },
{ "Item2", 0, 0 },
{ "Item3", 0, 0 }}
);
类菜单页{
std::字符串菜单项;
std::向量菜单项;
公众:
菜单页(标准::字符串s,标准::向量m):
菜单项(s),菜单项(m){}
};
静态常量菜单页菜单名(
“主菜单”,
{{“Item1”,0,0},
{“Item2”,0,0},
{“Item3”,0,0}
);
注意,对于
MenuItem
您的意思是struct
,而不是class
,您应该做同样的事情?