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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
gore-lykovoe
32 / 32 / 1
Регистрация: 04.04.2010
Сообщений: 414
#1

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

18.03.2012, 16:57. Просмотров 649. Ответов 2
Метки нет (Все метки)

Есть абстрактный класс E, производный от CObject, в нем чистая виртуальная войдовская функция. Создал динамические объекты классов, которые являются производными от нашего абстрактного класса E и засунул их в контейнер CO/blist, как теперь запустить войдовскую функцию объекта любого?
Например,
CO/blist container;
container.AddHead( динамическиий объект );
Как теперь вызвать его метод?
POSITION pos;
pos = container.GetHeadPosition();
E * pE = container.GetAt ( pos ); (чтобы потом pE->вызов ф-ии) не работает.

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

Как вызвать прегруженный const метод для статического объекта - C++
class A { public: A() { cout << "A()" << endl; } ~A() { cout << "~A()" << endl; } void foo() { cout << "foo 1_1"; } ...

Как в классе А у объекта класса B вызвать метод класса B ? - C++
Есть Класс A и класс B . В классе B лежит объект типа ArrayList , назовём его arrayList, в этом же классе есть метод push() . Возможно ли в...

Как по требованию вызвать дескриптора объекта? - C++
Здрасти! Подскажите пожалуйста, как вызвать дескриптор объекта myCar до сообщения "End of programm"?: class Car { public: ...

Как вызвать конструктор для неизвестного объекта? - C++
Добрый вечер. Помогите мне с задачей. Хочу написать шаблонный класс вектор. И в конструкторе по умолчанию нужно прописать конструкцию...

Как вызвать метод класса? - C++
User.cpp User::User(string name): name(name), price(0), amount(0) { cout <<"User has been create"; } ...

Как вызвать из метода метод? - C++
Здравствуйте. Прошу Вас помочь. Как мне вызвать из метода Set метод Draw? Мне надо передать объект A в Draw (у которого есть координаты x и...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
DU
1483 / 1059 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
18.03.2012, 17:04 #2
не работает - это не компилируется чтоли?
я так понял контейнер не типизированный. хранит указатели на объекты, которые производные от CObject. Раз так, то тут без преобразований неполучится сделать. Сперва нужно из контейнера достать указатель на нужный объект (его тип будет CObject*), потом скастить этот указатель в указатель на E и потом уже у этого указателя на E звать нужную функцию. Кастить можно либо статик кастом, либо с проверкой (т.е. dynamic_cast).
1
gore-lykovoe
32 / 32 / 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 проблему решил) Большое спасибо)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.03.2012, 17:46
Привет! Вот еще темы с ответами:

Удаление объекта из контейнера - C++
Доброго вечера... Помогите разобраться... Есть класс А: class A { }; В нем метод В: ... void B (std::deque<А> &С , unsigned...

Как вызвать другой конструктор для уже созданного объекта конструктором по умолчанию? - C++
Есть класс в котором несколько конструкторов, Мне в некоторых местах нужно создавать объекты класса с конструктором по умолчанию для...

Как вызвать метод родительского класса; - C++
Собственно вопрос; Есть класс a и b; Класс b унаследован от класса a; И как теперь из класса b вызвать функцию класса a;

Как вызвать метод для for_each? - C++
Здравствуйте. Мне нужно вызвать один метод для коллекции объектов. Что то вроде такого std::for_each( container.begin(),...


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

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

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