C++ gcc not clang错误:无法从'&书信电报;括号内的初始值设定项列表>';至';标准::向量<&燃气轮机;
以下代码仅对gcc产生错误:C++ gcc not clang错误:无法从'&书信电报;括号内的初始值设定项列表>';至';标准::向量<&燃气轮机;,c++,gcc,C++,Gcc,以下代码仅对gcc产生错误: could not convert '{{"John", 32}, {"Theo", 23}, {"Aun", 43}, {"Vivien", 67}}' from '<brace-enclosed initializer list>' to 'std::vector<Person>' {"
could not convert '{{"John", 32}, {"Theo", 23}, {"Aun", 43}, {"Vivien", 67}}' from '<brace-enclosed initializer list>' to 'std::vector<Person>'
{"Vivien", 67}};
无法将“{“John”,32},{“Theo”,23},{“Aun”,43},{“Vivien”,67}”从“”转换为“std::vector”
{“Vivien”,67};
#包括
结构人{
//const char*name;//这可能是由于文字字符串是const char*
到char[]
,因此如果没有隐式构造函数,可能不知道正确的聚合初始值设定项,如果您想用GCC快速编译此字符串,请执行以下操作之一:
std::vector<Person> parr1 = {
Person {"John", 32},
Person {"Theo", 23},
Person {"Aun", 43},
Person {"Vivien", 67}
};
std::vector parr1={
人{“约翰”,32},
人{“Theo”,23},
人{“Aun”,43},
人{“Vivien”,67}
};
第一个答案使用显式聚合初始化来确保类型在编译时已知。另一个选项是:
struct Person{
const char* name;
int age;
};
int main(){
std::vector<Person> parr1 = {
{ "John", 32 },
{ "Theo", 23 },
{ "Aun", 43 },
{ "Vivien", 6 }
};
return 0;
}
struct-Person{
常量字符*名称;
智力年龄;
};
int main(){
标准::向量parr1={
{“约翰”,32},
{“Theo”,23},
{“Aun”,43},
{“Vivien”,6}
};
返回0;
}
这只是确保聚合初始化不需要进行类型转换。值得一提的是,您的代码是使用g++主干编译的(而不是刚刚发布的10.3.0)。
struct Person{
const char* name;
int age;
};
int main(){
std::vector<Person> parr1 = {
{ "John", 32 },
{ "Theo", 23 },
{ "Aun", 43 },
{ "Vivien", 6 }
};
return 0;
}