[英]Initialize vectors in classes
是否可以在結構或類中初始化向量。 這是一個我要如何使其工作的示例
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 }}
};
此結構應表示Windows中的動態控制台菜單。 我使用單例模式來訪問菜單。 類型MenuPage *的membervar被保存為對象中的菜單入口點。
因此,如果不可能,您可以建議哪些替代方法?
將這些成員設為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 }}
);
請注意,應該對MenuItem
執行相同的操作。
在C ++ 11中,您可以完全做到這一點(或者至少可以,如果類成員是公共的,則可以這樣做)。
如果您被困在過去,那就更麻煩了; 編寫函數以創建並返回向量,或者使用Boost.Assignment庫之類的東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.