Форум программистов, компьютерный форум CyberForum.ru

Создание массива экземпляров класса с не стандарным конструктором - C++

Восстановить пароль Регистрация
 
andrei4_2
0 / 0 / 0
Регистрация: 02.04.2016
Сообщений: 3
17.08.2016, 12:25     Создание массива экземпляров класса с не стандарным конструктором #1
Здравствуйте. Подскажите пожалуйста. Есть у меня некий класс Аaa. У него два конструктора - простой и с передаваемым параметром.
C++
1
2
3
4
5
6
7
class Aaa
{
public:
    Aaa();
    Aaa(unsigned char *);
    ...
    }
Вопрос - как мне создать динамический массив таких классов, используя второй конструктор?
Такой вариант не работает..
C++
1
2
unsigned char * с;
Aaa *T = new Aaa(с)[10];
А в этом случае сначала вызывается простой конструктор, а только потом второй. Это дает неприятную задержку по времени..
C++
1
2
3
4
5
    
unsigned char * с;
Aaa *T = new Aaa [10];
for (int i = 0; i < 10; i++)
    T[i] = Aaa (с);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.08.2016, 12:25     Создание массива экземпляров класса с не стандарным конструктором
Посмотрите здесь:

Задание начальных значений объекта класса конструктором C++
C++ Член класса, создаваемый конструктором с параметром
C++ Ошибка инициализации объекта, конструктором класса
Не создается указатель из-за базового класса с конструктором C++
Создание массива класса, с установленным конструктором C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ferrari F1
Заблокирован
298 / 284 / 62
Регистрация: 27.01.2015
Сообщений: 1,915
Записей в блоге: 1
Завершенные тесты: 1
17.08.2016, 12:30     Создание массива экземпляров класса с не стандарным конструктором #2
Компилятора пад рукой нет но мб так?
C++
1
Aaa *T = new Aaa [10] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
gru74ik
Модератор
 Аватар для gru74ik
3121 / 1347 / 167
Регистрация: 20.02.2013
Сообщений: 3,855
Записей в блоге: 17
17.08.2016, 12:34     Создание массива экземпляров класса с не стандарным конструктором #3
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
Компилятора пад рукой нет
Он всегда под рукой (раз, два) если есть инет.
Ferrari F1
Заблокирован
298 / 284 / 62
Регистрация: 27.01.2015
Сообщений: 1,915
Записей в блоге: 1
Завершенные тесты: 1
17.08.2016, 12:35     Создание массива экземпляров класса с не стандарным конструктором #4
Только конструктор должен принимать целый тип а не указатель

Добавлено через 36 секунд
gru74ik, я с планшета , ниудобна ))
andrei4_2
0 / 0 / 0
Регистрация: 02.04.2016
Сообщений: 3
17.08.2016, 12:46  [ТС]     Создание массива экземпляров класса с не стандарным конструктором #5
Спасибо!
C++
1
Aaa *T = new Aaa [10] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
Такой вариант работает и мне в целом сойдет. Но просто ради интереса, а если вместо 10 будет n?
Ferrari F1
Заблокирован
298 / 284 / 62
Регистрация: 27.01.2015
Сообщений: 1,915
Записей в блоге: 1
Завершенные тесты: 1
17.08.2016, 12:56     Создание массива экземпляров класса с не стандарным конструктором #6
andrei4_2, боюсь, что простого решения не найти, сложное - задействовать в классе аллокатор, а может получится перегрузить оператор нью, правда я ни разу этого не делал
avgoor
562 / 352 / 83
Регистрация: 05.12.2015
Сообщений: 1,137
17.08.2016, 13:06     Создание массива экземпляров класса с не стандарным конструктором #7
Цитата Сообщение от andrei4_2 Посмотреть сообщение
а если вместо 10 будет n?
vector + reserve() + emplace_back()
DrOffset
6459 / 3833 / 885
Регистрация: 30.01.2014
Сообщений: 6,628
17.08.2016, 13:13     Создание массива экземпляров класса с не стандарным конструктором #8
Цитата Сообщение от andrei4_2 Посмотреть сообщение
Но просто ради интереса, а если вместо 10 будет n?
Можно вручную разнести фазы выделения памяти и нициализации под любой необходимый вариант. Ключевое слово - placement new.
Но это все крайности. Для типовых задач в С++ существует std::vector и другие контейнеры.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.08.2016, 13:18     Создание массива экземпляров класса с не стандарным конструктором
Еще ссылки по теме:

Реализовать создание и заполнение одним числом двумерного массива конструктором с тремя параметрами C++
Пример создания массива экземпляров другого класса C++
C++ Создание класса с определенным конструктором

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
andrei4_2
0 / 0 / 0
Регистрация: 02.04.2016
Сообщений: 3
17.08.2016, 13:18  [ТС]     Создание массива экземпляров класса с не стандарным конструктором #9
Ок. Всем спасибо за ответы.
Yandex
Объявления
17.08.2016, 13:18     Создание массива экземпляров класса с не стандарным конструктором
Ответ Создать тему
Опции темы

Текущее время: 18:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru