Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
andrei4_2
0 / 0 / 0
Регистрация: 02.04.2016
Сообщений: 3
1

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

17.08.2016, 12:25. Просмотров 232. Ответов 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
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.08.2016, 12:25
Ответы с готовыми решениями:

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

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

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

Создание экземпляра производного класса конструктором базового
Всем привет создал базовый класс, который в конструкторе принимает некий параметр class...

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

8
Ferrari F1
795 / 525 / 157
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 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
sourcerer
Модератор
Эксперт CЭксперт С++
4976 / 2158 / 330
Регистрация: 20.02.2013
Сообщений: 5,595
Записей в блоге: 24
Завершенные тесты: 1
17.08.2016, 12:34 3
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
Компилятора пад рукой нет
Он всегда под рукой (раз, два) если есть инет.
0
Ferrari F1
795 / 525 / 157
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
Завершенные тесты: 1
17.08.2016, 12:35 4
Только конструктор должен принимать целый тип а не указатель

Добавлено через 36 секунд
gru74ik, я с планшета , ниудобна ))
0
17.08.2016, 12:35
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
795 / 525 / 157
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
Завершенные тесты: 1
17.08.2016, 12:56 6
andrei4_2, боюсь, что простого решения не найти, сложное - задействовать в классе аллокатор, а может получится перегрузить оператор нью, правда я ни разу этого не делал
0
avgoor
1067 / 621 / 158
Регистрация: 05.12.2015
Сообщений: 1,795
17.08.2016, 13:06 7
Цитата Сообщение от andrei4_2 Посмотреть сообщение
а если вместо 10 будет n?
vector + reserve() + emplace_back()
1
DrOffset
11455 / 6157 / 1503
Регистрация: 30.01.2014
Сообщений: 10,030
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
17.08.2016, 13:18
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.08.2016, 13:18

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

Создание массива экземпляров класса
namespace WindowsFormsApplication1 { public partial class Form1 : Form { public...

Создание массива экземпляров класса
namespace WindowsFormsApplication1 { public partial class Form1 : Form { public...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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