【发布时间】:2018-04-19 04:49:08
【问题描述】:
我正在处理一个遗留代码库,其中一个头文件定义了 5 个字符串,如下所示:
#define NUM_STRINGS 5
extern string string_0;
extern string string_1;
extern string string_2;
extern string string_3;
extern string string_4;
在其他地方的 cpp 文件中:
string string_0 = make_string("my_string_0");
string string_1 = make_string("my_string_1");
string string_2 = make_string("my_string_2");
string string_3 = make_string("my_string_3");
string string_4 = make_string("my_string_4");
现在在代码库中,这些字符串用作函数参数,因为我们有一个函数void func(string str),其中 str 始终是这 5 个字符串之一。有没有办法将这些字符串放入一个类型中,比如 string_enum,
将以 [near] 零成本从类型中获取正确的字符串
保证别人不能打电话
func("hello world")允许我获取枚举中的元素数量
还有什么你想提的有用的东西
【问题讨论】:
-
string string_0 = new string("my_string_0");- 你不能有这样的代码 - 它不会编译。贴出真实代码。 -
首选
const unsigned int NUM_STRINGS = 5;而不是#define NUM_STRINGS 5并且任何时候你有编号为1 到N 的变量,你真正想要的是N 个元素的数组。 -
不要将
using namespace std放在标题中。 -
@NeilButterworth 字符串是在一些我还没有真正找到的函数中静态构造的。新的不正确
标签: c++ string boost types enums