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

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

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

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

17.08.2016, 12:25. Просмотров 162. Ответов 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 (с);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.08.2016, 12:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создание массива экземпляров класса с не стандарным конструктором (C++):

Создание массива класса, с установленным конструктором - C++
Не могу разобраться, создаю ссылку на класс в h файле, далее в cpp инициализирую, *.h FILE* file. *.cpp, вот тут мне нужен...

Пример класса с конструктором и деструктором, создание экземпляра класса через конструктор с параметрами - C++
Привести пример класса с конструктором и деструктором, созданием экземпляра класса с помощью конструктора с параметрами.

Создание класса с определенным конструктором - C++
Добрый день! Буду благодарен если поможете создать класс VectorEntry который будет соответствовать данному коду: VectorEntry...

Пример создания массива экземпляров другого класса - C++
Покажите как это делать, пожалуйста. И этот массив тоже должен быть в классе.

Реализовать создание и заполнение одним числом двумерного массива конструктором с тремя параметрами - C++
Добрый день. Одно из заданий лабораторной работы : &quot;Реализовать создание и заполнение одним числом двумерного массива конструктором...

Ошибка инициализации объекта, конструктором класса - C++
Добрый день. Написал программу. Создание класса (упражнение из книги Дейтеля) &quot;Создайте класс с именем Account, которым мог бы...

8
Ferrari F1
599 / 492 / 99
Регистрация: 27.01.2015
Сообщений: 2,895
Записей в блоге: 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};
1
gru74ik
Модератор
Эксперт CЭксперт С++
4174 / 1822 / 198
Регистрация: 20.02.2013
Сообщений: 4,967
Записей в блоге: 21
17.08.2016, 12:34 #3
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
Компилятора пад рукой нет
Он всегда под рукой (раз, два) если есть инет.
0
Ferrari F1
599 / 492 / 99
Регистрация: 27.01.2015
Сообщений: 2,895
Записей в блоге: 1
Завершенные тесты: 1
17.08.2016, 12:35 #4
Только конструктор должен принимать целый тип а не указатель

Добавлено через 36 секунд
gru74ik, я с планшета , ниудобна ))
0
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?
0
Ferrari F1
599 / 492 / 99
Регистрация: 27.01.2015
Сообщений: 2,895
Записей в блоге: 1
Завершенные тесты: 1
17.08.2016, 12:56 #6
andrei4_2, боюсь, что простого решения не найти, сложное - задействовать в классе аллокатор, а может получится перегрузить оператор нью, правда я ни разу этого не делал
0
avgoor
915 / 550 / 119
Регистрация: 05.12.2015
Сообщений: 1,531
17.08.2016, 13:06 #7
Цитата Сообщение от andrei4_2 Посмотреть сообщение
а если вместо 10 будет n?
vector + reserve() + emplace_back()
1
DrOffset
7321 / 4421 / 1001
Регистрация: 30.01.2014
Сообщений: 7,259
17.08.2016, 13:13 #8
Цитата Сообщение от andrei4_2 Посмотреть сообщение
Но просто ради интереса, а если вместо 10 будет n?
Можно вручную разнести фазы выделения памяти и нициализации под любой необходимый вариант. Ключевое слово - placement new.
Но это все крайности. Для типовых задач в С++ существует std::vector и другие контейнеры.
1
andrei4_2
0 / 0 / 0
Регистрация: 02.04.2016
Сообщений: 3
17.08.2016, 13:18  [ТС] #9
Ок. Всем спасибо за ответы.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.08.2016, 13:18
Привет! Вот еще темы с ответами:

Член класса, создаваемый конструктором с параметром - C++
class A { public: class B { ... B(A *param); // Как открыть этот конструктор классу A, но закрыть его ото всех...

Не создается указатель из-за базового класса с конструктором - C++
class Cbase { public: virtual void Start( ); int iGlobal; Cbase( int num ) { iGlobal = num ;

Массив экземпляров класса - C++
Доброго времени суток уважаемые форумчане. Возник вопрос: как заполнять массив экземплярами класса для CELL (дабы потом иметь возможность...

Задание начальных значений объекта класса конструктором - C++
здравствуйте, форумчане. подскажите, пожалуйта, можно ли реализовать следующее: нужно создать конструктор, способный использовать...


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

Или воспользуйтесь поиском по форуму:
9
Yandex
Объявления
17.08.2016, 13:18
Ответ Создать тему
Опции темы

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