|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
21.12.2011, 12:11 | #1 |
Новичок
Джуниор
Регистрация: 21.12.2011
Сообщений: 2
|
Передаю в элемент списка объект и не могу вызвать метод этого объекта.
Здравствуйте, помогите разобраться. Есть базовый класс. У него есть 4 класса потомков. Один из которых должен содержать в себе объекты других трех. И нужно: дальше в комментах
BaseListElem.h: #include <iostream> #include <vector> class BaseListElem { public: BaseListElem(){}; virtual void out(){}; virtual ~BaseListElem(){}; }; class StringElem : public BaseListElem { public: std::string el; StringElem() { el="String"; }; void out() { std::cout<<StringElem::el<<std::end l; }; virtual ~StringElem() {}; }; class FloatElem : public BaseListElem { public: float el; FloatElem(){ el=11.5; }; void out() { std::cout<<FloatElem::el<<std::endl ; }; virtual ~FloatElem() {}; }; class IntElem : public BaseListElem { public: int el; IntElem(){ el=11; }; void out() { std::cout<<IntElem::el<<std::endl; }; virtual ~IntElem() {}; }; class PNList : public BaseListElem { public: PNList *Prev; PNList *Next; BaseListElem *elem; int number; PNList(PNList *pr,BaseListElem *el){ Next=NULL; Prev=pr; elem=el; number=19; }; void out() { std::cout<<"PNList"<<std::endl; }; virtual ~PNList(){ Prev->Next=Next; Next->Prev=Prev; }; }; ___________________________________ ________________________ TTE.cpp: #include <stdio.h> #include <stdlib.h> #include <typeinfo> #include <string> #include "BaseListElem.h" int main() { //Каждый объект имеет возможность вывести свое содержимое на консоль IntElem *iEl; iEl=new IntElem(); iEl->out(); FloatElem *fEl; fEl=new FloatElem(); fEl->out(); delete fEl; StringElem *sEl; sEl=new StringElem(); sEl->out(); delete sEl; PNList *List2; List2=new PNList(NULL,sEl);//Указатель на первый элемент списка List2->elem->out();//Вывод "PNList", а хочу увидеть "String" //ведь при создании конструктором класса PNList объекта этого //типа в Elem передается указатель на объект класса StringElem //Я НЕ ПОНИМАЮ //кусок кода, который пока не важен return 0; }; Спасибо заранее. |
21.12.2011, 13:15 | #2 |
Новичок
Джуниор
Регистрация: 21.12.2011
Сообщений: 2
|
Ребят, я нашла причину моего заболевания. Указатель на первый элемент нельзя использовать. А следующие работают отлично :-)
List3=new PNList(List2,sEl); List3->Elem->out(); //Выдает то, что нужно. //А нулевой/первый элемент списка нужно инициализировать в Elem - Null. Спасибо. Удачи ) |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
CLR. Ошибка C3918. Как вызвать из объекта обработчик, переданный родителю объекта от деда? | Stilet | Общие вопросы .NET | 0 | 15.01.2011 17:49 |
Массив в dll - как разместить массив в dll и как вызвать элемент этого массива по индексу? | Кинельски | Помощь студентам | 0 | 23.05.2010 20:52 |
Удаление последнего элемента из списка и реверс этого списка. | Goose | Общие вопросы C/C++ | 8 | 16.05.2010 16:12 |
В экземпляре объекта не задана ссылка на объект. | Selebro | Общие вопросы C/C++ | 1 | 01.12.2008 22:48 |
Вызвать onmouseover с объекта flash | Romanbl4 | JavaScript, Ajax | 10 | 23.02.2008 01:27 |