这有效......
struct FOO
{
char bar1[50 + 1];
char bar2[50 + 1];
};
FOO foo[] =
{
{"baz1", "baz2"},
{"baz3", "baz4"}
};
但这不是......
struct FOO2
{
FOO2(void) { };
char bar1[50 + 1];
char bar2[50 + 1];
};
FOO2 foo2[] =
{
{"baz1", "baz2"},
{"baz3", "baz4"}
};
Morover,这......
struct FOO3
{
void init(void) { };
char bar1[50 + 1];
char bar2[50 + 1];
};
FOO3 foo3[] =
{
{"baz1", "baz2"},
{"baz3", "baz4"}
};
......也有效。
因此,方法不会禁止数组初始化,但构造函数会这样做。
从Microsoft的错误描述中,这些属性(以及其他属性)导致实体变为“非聚合”,因此不再是数组初始化的有效目标:
Constructors
Private or protected members
Base classes
Virtual functions
为什么,在构造函数的情况下?