【发布时间】:2016-01-07 07:11:11
【问题描述】:
我目前正在定义一些常量:
struct ModInfo {
int numChoices;
string menu;
ModInfo (int count, string menuText) : numChoices(count), menu(menuText) {
}
};
const ModInfo menus[4] = {ModInfo(3, "..."), ModInfo(7, "...", ...};
每个ModInfo 都包含一个模块的信息,main() 将使用该模块将菜单打印到显示器和流程控制,以确定要打印哪个模块的菜单以及随后执行其中的哪个功能。
除了通过数组索引访问数组元素内的模块信息之外,我可以为该元素分配一个标识符(即模块的名称)吗?有没有直接的方法可以做到这一点,或者enum 是唯一可以做到这一点的黑客吗?
编辑:请停止在我提出的每个问题中要求我使用 C++11。如果可以的话我会的。
【问题讨论】:
-
我标记为 C++03。如果您仅限于使用 C++11 之前的方言,则应使用此标记。
-
错误的术语:标识符通常是指源代码中的标记。
-
@BasileStarynkevitch 这不是错误的术语。我在问是否可以在开发过程中将数组元素映射到标识符,而不是将保留在构建中的字符串值。
-
@thegreatjedi:如果您想使用标识符,那么我不明白为什么枚举是一个黑客。您能否在问题中包含一些描述您想要做什么的伪代码?
-
让模块标识符成为实际的 C++ 标识符(例如常量)是否足够,或者您是否需要可以在运行时指定的内容,例如一个字符串?
标签: c++ arrays initialization identifier c++03