struct comp {
long a;
vector<int> b(9);
bool c;
};
错误:
code.cpp:67:19: error: expected identifier before numeric constant
code.cpp:67:19: error: expected ‘,’ or ‘...’ before numeric constant
这有什么问题?如果我说b
将有9个元素,为什么g ++不接受?
答案 0 :(得分:10)
因为C ++不能像那样工作。
初始化器位于构造函数的初始化列表中,例如
struct comp {
long a;
vector<int> b;
bool c;
comp() : b(9) { }
};
(请注意,这样定义的类不再是聚合。)
注意:C ++ 11添加了成员初始值设定项,但只使用了复制初始化语法:
struct Foo {
int a = 5;
vector<char> b = vector<char>(8);
};
编译器对此的支持仍然不完整。
答案 1 :(得分:0)
vector<int> b(9);
是一个具体的数据结构。它正在寻找类型和标签,而不是实际的数据结构。应该只需要vector<int> b;
。