我尝试编译非常简单的代码:
struct T {
int a[3];
int b;
int c;
};
int main() {
const int as[3] = { 5, 6, 7, };
const T t {
as, 2, 3,
};
return 0;
}
但它给了我非常奇怪的错误:
t.cpp: In function 'int main()':
t.cpp:11:5: error: array must be initialized with a brace-enclosed initializer
};
^
据我了解,编译器希望我在一个地方初始化所有内容。如何分别初始化字段,然后在初始化结构时使用它们?
最佳答案
数组既不能复制构造也不能复制赋值。如果您可以访问 C++11 和更新版本,则可以使用 std::array
。
#include <array>
struct T {
std::array<int, 3> a;
int b;
int c;
};
int main() {
const std::array<int,3> as = { 5, 6, 7, };
const T t {
as, 2, 3,
};
return 0;
}
否则,您将不得不滚动循环并单独复制元素。
关于C++ 在结构初始化期间出现奇怪的错误,里面有一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46212366/