C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
new delete, массивы
DVD
Отправлено: 11.04.2004, 08:51


Дежурный стрелочник

Группа: Участник
Сообщений: 33



Вопрос такой. Динамически переменные можно создавать двумя способами.
double *a=new double
Такую можно удалить командой delete a

А, если создавать командой
double a=*new double
Как такую удалить? delete a не работает.

Просто я хочу динамически создать класс, но чтобы обращаться к его свойствам не через ->, а через точку. Класс создается, но как его удалить.

Еще вопрос.
Есть класс Planet
Есть класс Space, в которм есть свойство n — количество этих Planet. Мне надо, чтобы в зависимости от выбора пользователя создавался массив из n Planet. Я могу пользователя ограничить каким-то числом, но мне интересно, как внутри класса создавать массив из другого класса, произвольного размера и, чтобы к этому классу можно было обращаться. Если в конструкторе Space создать динамический массив из Planet, то к ним потом нет доступа.





olegenty
Отправлено: 12.04.2004, 06:47


Ветеран

Группа: Модератор
Сообщений: 2412



Найди книжку Б. Страуструпа и на досуге её перечти вкрадчиво.

Р.S. double a = * new double — интересно, и нафига так изгаляться.

динамический массив организуй, пользуясь либо
vector , либо DinamicArray, либо наследником TList
DVD
Отправлено: 18.04.2004, 07:20


Дежурный стрелочник

Группа: Участник
Сообщений: 33



QUOTE
Р.S. double a = * new double — интересно, и нафига так изгаляться.

Я же говорю, чтобы не извращаться -> а через точку.
Asher
Отправлено: 18.04.2004, 09:49


Мастер участка

Группа: Модератор
Сообщений: 550



Если твой клас неотнаследован от TObject? то ты можешь не создавать его через new. Просто создай экземпляр  — и пользуйся своей точкой.
Время жизни будет в пределах области видимости.
Помещать можеш в вектор std::vector vctPlanets.
Только если у тебя твои Planet переменной длины — то куча граблей твои. Или у Planet наследники есть в этом-же векторе.
В принципе можешь в вектор класть указатели на Planet biggrin.gif, то там тогда опять -> появится.

Чем она тебе не угодила?
olegenty
Отправлено: 18.04.2004, 15:15


Ветеран

Группа: Модератор
Сообщений: 2412



после перехода с паскаля на C++, я уже почти забыл про точки...

класс — смарт-указатель реализуй как template, и пользуйся. если уж ну очень стебает "->" ставить...

Вернуться в Вопросы программирования в C++Builder