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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
andrei4_2
0 / 0 / 0
Регистрация: 02.04.2016
Сообщений: 3
#1

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

17.08.2016, 12:25. Просмотров 133. Ответов 8
Метки нет (Все метки)

Здравствуйте. Подскажите пожалуйста. Есть у меня некий класс А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++ Указатель на массив экземпляров класса
Не создается указатель из-за базового класса с конструктором C++
C++ Инициализация экземпляров класса из файла
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ferrari F1
Заблокирован
17.08.2016, 12:30     Создание массива экземпляров класса с не стандарным конструктором #2
Компилятора пад рукой нет но мб так?
C++
1
Aaa *T = new Aaa [10] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
gru74ik
Модератор
Эксперт CЭксперт С++
 Аватар для gru74ik
3857 / 1615 / 188
Регистрация: 20.02.2013
Сообщений: 4,644
Записей в блоге: 21
17.08.2016, 12:34     Создание массива экземпляров класса с не стандарным конструктором #3
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
Компилятора пад рукой нет
Он всегда под рукой (раз, два) если есть инет.
Ferrari F1
Заблокирован
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
Заблокирован
17.08.2016, 12:56     Создание массива экземпляров класса с не стандарным конструктором #6
andrei4_2, боюсь, что простого решения не найти, сложное - задействовать в классе аллокатор, а может получится перегрузить оператор нью, правда я ни разу этого не делал
avgoor
 Аватар для avgoor
789 / 431 / 94
Регистрация: 05.12.2015
Сообщений: 1,274
17.08.2016, 13:06     Создание массива экземпляров класса с не стандарным конструктором #7
Цитата Сообщение от andrei4_2 Посмотреть сообщение
а если вместо 10 будет n?
vector + reserve() + emplace_back()
DrOffset
6820 / 4031 / 924
Регистрация: 30.01.2014
Сообщений: 6,847
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++
C++ Создание класса с определенным конструктором
C++ ошибка при выводе экземпляров класса

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

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

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