为什么在声明结构时不能初始化结构中的向量成员?
Why can't I initialize a vector member in a structure while declaring it?
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
g++ 将有 9 个元素,为什么 g++ 不接受?
因为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);
};
编译器对此的支持仍然不完整。
vector<int> b(9);
是一个具体的数据结构。它正在寻找类型和标签,而不是实际的数据结构。 vector<int> b;
应该是您所需要的。
相关文章:
- 将结构向量排序为子组
- NLOHMANN 的 JSON 库将数组转换为结构向量
- 如何在 c++ 中创建结构向量的映射
- 带unique_ptr的结构向量
- C++ - 如何在结构向量中找到结构体一个成员的最大值?
- 将信息输入到下面显示的结构向量中的正确语法/格式是什么
- C++对结构向量进行排序
- 在C++中对结构向量进行排序时出现问题
- 将结构向量保存到文件中,并从C++文件中读取结构向量
- 搜索并替换结构向量中的值
- 在结构向量中查找最接近的值
- 清除结构向量时会发生什么?
- 如何从 node-ffi 调用 c++ 中以结构向量作为参数的方法?
- 对结构向量进行两次排序
- 将一种数据类型的向量复制到同一数据类型的结构向量中的有效方法是什么
- 如何二进制搜索结构向量并在适当的索引处插入
- 结构向量中自定义结构函数的内存使用
- C++11-在结构向量中修改结构的成员
- 我正在尝试找到一个特定的结构成员,该成员是使用 lambda 函数的结构向量
- 在结构向量中搜索一个数据成员,然后打印匹配的所有数据成员