MEA CULPA:
好吧,我错了。我找到了 VarInfo::m_datatypeName[] 的声明,它是 VarInfo::m_datatypeName[9]。是的,硬编码。我向所有为我挠头的人道歉。
我收到此错误:
too many initializers for 'std::string[9]'
对于这个声明:
std::string VarInfo::m_datatypeName[] = { "", "STRING", "TIME", "MACADDRESS", "IPADDRESS", "STRINGSET", "SET", "UINT32", "INT32", "BOOL" };
新的信息:
注意:声明中没有 9 或 10。如果分配列表中的项目不超过九个,这很好用。问题是第 10 项。
结束新信息:
我有一个模糊的回忆,std::string 声明为一些默认数量的字符预先分配了空间,所以我想怀疑字符串数组的类似行为。
所以,这就是问题所在。我应该如何正确声明这一点?希望不必硬声明 m_datatypenames 的大小?