我有一个问题:使用以下 C++ 代码(使用 C 风格的结构),我收到以下错误:
elements of partially initialized array must have a default constructor
我假设它在谈论不知道如何隐式初始化 的其余元素test.a
,但我不知道如何修复它。也许我需要简单地添加一个构造函数,但我不想更改结构定义(这只是我面临的实际问题的一个精简示例)。
typedef struct inner_t
{
const char* a;
const int b;
const char* c[6];
} inner;
typedef struct outer_t
{
const inner a[10];
} outer;
int main()
{
outer test = {{
{ "hi!", 0, { "1", "2", "3", "4", "5", ""} },
{ "", -1, { "" } }
}};
return 0;
}
我不在乎我手动初始化的元素之后会发生什么。我只关心我没有得到错误。
感谢您的任何帮助!
编辑:如果我添加一个默认构造函数inner
喜欢这样:
typedef struct inner_t
{
/* previous stuff */
inner_t() : a(""), b(-1) { }
}
然后我得到更多错误:
initialization with '{...}' is not allowed for object of type "const inner"
我尝试添加不同的构造函数,但无济于事。我不明白为什么 C 风格的结构不只是有一个默认的构造函数。