Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> неоднородный список классов 
:(
    Опции темы
peetonn
Дата 18.12.2006, 01:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 25.11.2006

Репутация: нет
Всего: нет



неоднородный список классов(т е список разных классов) - как можно реализовать это на С++?
я так думаю,что указатель на void ? или нет....? если да, то как его использовать?

*имеется ввиду: какого типа должно быть поле данных в элементе списка и каким образом его использовать как класс

Это сообщение отредактировал(а) peetonn - 18.12.2006, 01:31
PM MAIL   Вверх
Kuvaldis
Дата 18.12.2006, 01:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


механик-вредитель
***


Профиль
Группа: Участник Клуба
Сообщений: 1189
Регистрация: 16.6.2006
Где: Минск

Репутация: 11
Всего: 61



peetonn, 
Если объекты связаны между собой как потомки-родители, то очень красиво можно сделать через наследование и виртуальные функции. А объектом списка будет указатель на базовый класс.



--------------------
Помни - когда ты спишь, враг не дремлет
Спи чаще и дольше, изматывай врага бессоницей
PM MAIL ICQ   Вверх
peetonn
Дата 18.12.2006, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 25.11.2006

Репутация: нет
Всего: нет



Цитата

А объектом списка будет указатель на базовый класс.

Kuvaldis, а если элементом списка будет не указатель на класс, а сам класс, ничего не получится?
Дело в том, что список я создаю в отдельной функции(создаю переменные класса, унаследованного от родителя, запихиваю указатели на них в список), а после выхода из функции, эти переменные-то уничтожаются, соответсвенно указатели на них указывают не туда куда надо. как в этом случае поступить. создавать список там где его юзать?

Это сообщение отредактировал(а) peetonn - 18.12.2006, 15:10
PM MAIL   Вверх
Mad
Дата 18.12.2006, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Эксперт
Сообщений: 656
Регистрация: 18.10.2004
Где: Одесса

Репутация: 7
Всего: 19



Цитата(peetonn @  18.12.2006,  14:09 Найти цитируемый пост)
а после выхода из функции, эти переменные-то уничтожаются, соответсвенно указатели на них указывают не туда куда надо. как в этом случае поступить.

просто не удаляй эти обьекты smile

выделяй их не в стеке а глобально 
Код

CSomeClass *pClass = new CSomeClass();
list.add(pClass);

тогда они удаляться не будут, и указатели будут оставаться действительными.


--------------------
user posted image
PM MAIL   Вверх
peetonn
Дата 18.12.2006, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 25.11.2006

Репутация: нет
Всего: нет



Цитата

выделяй их не в стеке а глобально 

это не очень удобно в моей ситуации. я делаю функцию создания окна(в консоли рисует). 
выглядетьт примерно так должно:
Код

CreateMainWindow(mainW);

здесь в функцию создания окна (void CreateMainWindow(TWindow& )) передаем адрес окна . TWindow - мой класс. а уже в самой функции создаем там кнопки, надписи и пр. все компоненты хранятся в Списке. вот класс:
Код

struct TWindow : TObject{
    TWindow(){...};    // constructor

    char* Caption;
    int Width, Height;
    
    List<TObject*> Components;   // список компонет, размещенных на онкне
    TObject* selObj;

    void Show(){...};    
    bool OnKeyPress(ConsoleKeyInfo cki){...};
}; // Window

так вот после создания окна в функции, все указатели компонент удаляются(
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0403 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.