Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 21.12.2011, 12:11   #1
Len_a
Новичок
 
Регистрация: 21.12.2011
Сообщений: 2
Репутация: 10
По умолчанию Передаю в элемент списка объект и не могу вызвать метод этого объекта.

Здравствуйте, помогите разобраться. Есть базовый класс. У него есть 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
Репутация: 10
По умолчанию

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

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
CLR. Ошибка C3918. Как вызвать из объекта обработчик, переданный родителю объекта от деда? Stilet Общие вопросы .NET 0 15.01.2011 18: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 23:48
Вызвать onmouseover с объекта flash Romanbl4 JavaScript, Ajax 10 23.02.2008 02:27


21:06.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru