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

Как вызвать метод объекта из контейнера? - C++

Восстановить пароль Регистрация
 
gore-lykovoe
 Аватар для gore-lykovoe
31 / 31 / 1
Регистрация: 04.04.2010
Сообщений: 414
18.03.2012, 16:57     Как вызвать метод объекта из контейнера? #1
Есть абстрактный класс E, производный от CObject, в нем чистая виртуальная войдовская функция. Создал динамические объекты классов, которые являются производными от нашего абстрактного класса E и засунул их в контейнер CO/blist, как теперь запустить войдовскую функцию объекта любого?
Например,
CO/blist container;
container.AddHead( динамическиий объект );
Как теперь вызвать его метод?
POSITION pos;
pos = container.GetHeadPosition();
E * pE = container.GetAt ( pos ); (чтобы потом pE->вызов ф-ии) не работает.

Добавлено через 2 часа 20 минут
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.03.2012, 16:57     Как вызвать метод объекта из контейнера?
Посмотрите здесь:

C++ Как вызвать конструктор для неизвестного объекта?
C++ Удаление объекта из контейнера
C++ Как по требованию вызвать дескриптора объекта?
C++ Как вызвать метод для for_each?
C++ Как вызвать метод класса?
Удаление объекта класса из контейнера C++
C++ Как вызвать другой конструктор для уже созданного объекта конструктором по умолчанию?
Как вызвать из метода метод? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
18.03.2012, 17:04     Как вызвать метод объекта из контейнера? #2
не работает - это не компилируется чтоли?
я так понял контейнер не типизированный. хранит указатели на объекты, которые производные от CObject. Раз так, то тут без преобразований неполучится сделать. Сперва нужно из контейнера достать указатель на нужный объект (его тип будет CObject*), потом скастить этот указатель в указатель на E и потом уже у этого указателя на E звать нужную функцию. Кастить можно либо статик кастом, либо с проверкой (т.е. dynamic_cast).
gore-lykovoe
 Аватар для gore-lykovoe
31 / 31 / 1
Регистрация: 04.04.2010
Сообщений: 414
18.03.2012, 17:46  [ТС]     Как вызвать метод объекта из контейнера? #3
сейчас скомпилировал и получил:
'=' : cannot convert from 'CObject *' to 'E *'
Cast from base to derived requires dynamic_cast or static_cast

Вообщем вы правы, значит, то что класс E производный от CObject ничего не дает(((

Добавлено через 15 минут
вообщем с помощью dynamic_cast проблему решил) Большое спасибо)
Yandex
Объявления
18.03.2012, 17:46     Как вызвать метод объекта из контейнера?
Ответ Создать тему
Опции темы

Текущее время: 09:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru