将构造函数添加到结构中;丢失数组初始化?

时间:2017-05-05 17:02:47

标签: constructor initialization

这有效......

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 

为什么,在构造函数的情况下?

0 个答案:

没有答案