我有一些由另一个人给我的代码,其中我们有一个结构
struct Pair {
string s1;
string s2;
bool equivalent;
};
然后他设置了这些硬编码结构的向量
std::vector<Pair> PairID;
staticdata() {
PairID={{"string","string2",true},
{"string","string3",true},
{"string","string4",false},
{"string","string7",false},
{"string3","string8",false}
};
}
不幸的是,我的编译器在 PairID={{“string”,“string2”,true},
为什么是这样?他建议使用 -std=c++0x 进行编译,但我的编译器(gcc 4.2)不支持这个。有没有一种简单的方法可以转换代码以使其正常工作?为什么会失败??
我正在使用 Mac OSX,并且不想更新我的编译器
原文由 Robert 发布,翻译遵循 CC BY-SA 4.0 许可协议
您的代码不是合法的 C++。它 是 合法的 C++0x,但语言发生了很多变化。因此,如果您想将此代码编译为 C++ 代码,则需要对其进行更改。
PigBen 的解决方案是一种方式,它的问题是临时数据可能会被多次构建和销毁,或者存在很长时间。
这是另一种方式: