Страницы

Поиск по вопросам

среда, 9 января 2019 г.

Как передать аргументы в конструктор при выделении памяти для массива объектов?

Есть структура:
struct A{ char * buf;
A(int size){ buf = new char[size]; } };
Хочу создать массив объектов A с указанным размером.
A * a = new A[10](10); // 10 объектов, должны конструироваться через A(int size)
но никак не получается.


Ответ

Если нет уж очень принципиальной потребности полагаться на сырые new, то можно использовать std::vector и один из его конструкторов:
std::vector v(10, A(10));
Правда в этом случае объект создается указанным конструктором один раз, а далее уже происходит копирование. То есть нужно написать подходящий копирующий конструктор.

Комментариев нет:

Отправить комментарий