Как объявить массив, а затем назначить в другой строке

class c{};

c *ar[2];

ar = {new c, new c}; //error

«Тип массива не присваивается» Как назначить его после объявления, я хочу сделать это, потому что класс использует эту переменную, поэтому я просто хочу объявить его, создать класс и затем присвоить значение, которое я не могу назначить раньше класс, потому что он не может сделать new c без определения класса в первую очередь.

0

Решение

использовать стандартный алгоритм библиотеки generate:

#include <algorithm>
#include <iterator>

class c{};
c* ar[2];
std::generate(std::begin(ar), std::end(ar), [] { return new c; });
1

Другие решения

используйте цикл:

for(auto i = std::begin(ar);i!=std::end(ar);++i)
*i = new c;

это будет работать для (почти) всех контейнерных классов, а не только для необработанных массивов.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector