C++ gives strange error during structure initialization with an array inside
C++ arrays are not copy constructible, so compilation will fail. However,
struct T {
int a[3];
int b;
int c;
};
int main() {
const T t {
{5, 6, 7, }, 2, 3,
};
return 0;
}
is an alternative, although it does discard the explicit as
variable.
Reference: http://en.cppreference.com/w/cpp/concept/CopyConstructible
Arrays are neither copy-constructible nor copy-assignable. If you have access to C++11 and newer, you could use 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;
}
Otherwise you will have to roll a loop and copy the elements individually.
As from what I understand the compiler wants me to initialize everything in one single place.
This is because array types decay into pointer types and then the compiler tries to assign a pointer to an array type.
How do I initialize fields separately and then use them during initiliazation the structure later?
You can use pointer types in the structure (which I would not advise). Or you can use container classes instead (STL).