Использование new для выделения массива элементов класса с перегруженным конструктором в C ++ - PullRequest
0 голосов
/ 11 июня 2010

В качестве примера скажем, что у меня есть класс foo, у которого нет конструктора по умолчанию, но который выглядит следующим образом

foo:foo(int _varA,int _varB)
{
   m_VarA = _varA;
   m_VarB = _varB;
}

Как бы я выделил их массив.Кажется, я помню, что пытался что-то подобное безуспешно.

foo* MyArray = new foo[100](25,14).

Не думаю, что это тоже сработает.Обычно я делаю это, записывая конструктор по умолчанию, используя некоторые предустановленные значения для _varA и _varB.Затем добавьте функцию для сброса _varA и _varB для каждого элемента, но это не сработает в этом случае.

Спасибо за помощь.

Ответы [ 2 ]

5 голосов
/ 11 июня 2010

Ваш первый выбор должен игнорировать тот факт, что new[] даже существует, и использовать вместо него std::vector:

std::vector<foo> MyArray(100, foo(25,14));
2 голосов
/ 11 июня 2010

Если вы хотите выделить массив класса (напрямую, используя new[]), класс должен иметь конструктор по умолчанию. Нет конструктора по умолчанию, нет динамических массивов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...