Как я могу инициализировать массив элементов объектов, которые не имеют конструктора по умолчанию? - PullRequest
0 голосов
/ 27 декабря 2011

Мне было интересно, может ли кто-нибудь сказать мне, как я должен инициализировать массив элементов-членов, если у объекта нет конструктора по умолчанию (т.е. требуются параметры).:

class Foo
{
public:
   Foo() : 
      memberArray{bar(1), bar(3), bar(2)}   // **The compiler doesnt like this** 
   {}
private:
   Bar memberArray[3];
};


struct Bar
{
   Bar(std::int32_t param1) {  }
}

Я использую GCC 4.6.1 и компилирую для c ++ 11.Кто-нибудь может указать, где я иду не так?(Кстати. Пожалуйста, не предлагайте динамически распределенную память, так как у меня ее нет ..)

1 Ответ

2 голосов
/ 27 декабря 2011

У вас есть несколько проблем: несоответствующий регистр, использование перед объявлением, пропущенные точки с запятой, пропущенные включения.Это намного ближе:

struct Bar
{
   Bar(int param1) {  }
};

class Foo
{
public:
   Foo() : 
      memberArray{Bar(1), Bar(3), Bar(2)}
   {}
private:
   Bar memberArray[3];
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...