Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2011, 12:11   #1
Len_a
Новичок
Джуниор
 
Регистрация: 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;
};

Спасибо заранее.
Len_a вне форума Ответить с цитированием
Старый 21.12.2011, 13:15   #2
Len_a
Новичок
Джуниор
 
Регистрация: 21.12.2011
Сообщений: 2
По умолчанию

Ребят, я нашла причину моего заболевания. Указатель на первый элемент нельзя использовать. А следующие работают отлично :-)

List3=new PNList(List2,sEl);
List3->Elem->out(); //Выдает то, что нужно.
//А нулевой/первый элемент списка нужно инициализировать в Elem - Null.

Спасибо. Удачи )
Len_a вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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