Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 初始化类中的向量_C++ - Fatal编程技术网

C++ 初始化类中的向量

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

是否可以初始化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 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
,您应该做同样的事情?