Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2010, 15:11   #1
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию Динамическое выделение памяти под массив объектов со специализированным конструктором

Здравствуйте. Возник еще один вопрос: существуют два класса, в одном из них определен указатель на другой класс. Когда конструктор второго класса инициализирует свой класс, в этом конструкторе вызывается функция new, которая создает динамический массив объектов первого класса:
Код:
MATRIX = new vector<TYPE>[sdim];  //MATRIX - это тип vector<TYPE>*
но, при создании такого массива, вызывается конструктор vector<TYPE>::vector(), являющийся конструктором по умолчанию.

Вопрос такой - как вызывать при создании массива конструктор не по умолчанию, а свой : так как будет написано ниже не получается:
Код:
MATRIX = new vector<TYPE>(cdim)[sdim];
С вариациями распложения скобок ознакомлен - пробовал переставить скобки разными способами - не помогает - то не может найти идентификатор, то ему не нравится, как используется функция new - в общем не могли бы вы мне помочь с этим вопросом
capta1n вне форума Ответить с цитированием
Старый 07.03.2010, 15:22   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Когда-то столкнулся с подобной проблемой. Решение было примерно такое:
Код:
vector<TYPE> ** Matrix = new vector<TYPE>*[sdim];
for (int i = 0; i < sdim; i++)
   Matrix[i] = new vector<TYPE>(cdim);
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 07.03.2010, 15:35   #3
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

то есть теперь MATRIX - это двойной указатель, хм, интересно, а с одним указателем не получится да?
хотелось бы, чтобы каждый элемент Matrix[i] представлял собой статический объект, то есть уже разыменованный, а из вашего интересного примера выходит, что это пока адрес, которые впоследствии инициализируется

Последний раз редактировалось capta1n; 07.03.2010 в 15:37.
capta1n вне форума Ответить с цитированием
Старый 07.03.2010, 15:40   #4
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Может быть и можно как-то так, но у меня, к сожалению, получилось только с указателями.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 07.03.2010, 15:43   #5
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

вот и я о том же, сижу уже второй день, ногти сгрыз полностью, но все равно, спасибо Большое, Гром, второй раз выручаете, к сожалению отблагодарить вас репутацией не могу - не позволяют, как только появится возможность - я обязательно добавлю.
Еще раз спасибо
capta1n вне форума Ответить с цитированием
Старый 07.03.2010, 15:54   #6
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Ага, вот Страуструп пишет:
Цитата:
Не существует способа явного указания аргументов конструктора (за исключением списка инициализации при объявлении массива. Если вам совершенно необходимо проинициализировать члены массива различными значениями, вы можете написать конструктор по умолчанию, который непосредственно или косвенно считывает и записывает нелокальные данные).
(Б. Страуструп "Язык программирования C++. Специальное издание" 10.4.7)
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 07.03.2010, 16:01   #7
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

Интересно, то есть все-таки надо как-то глобально это все дело провернуть, нелокально
capta1n вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
динамическое выделение памяти под верхний треугольник квадратной матрицы juventine Помощь студентам 2 12.04.2009 13:02
Динамическое выделение памяти под массивы Артем125 Общие вопросы C/C++ 4 07.04.2009 09:52
Динамическое выделение памяти FW-TOT Общие вопросы C/C++ 2 19.12.2008 00:42
массив объектов с конструктором копии pu4koff Общие вопросы C/C++ 6 18.06.2008 17:33