Static-указатель в абстрактном классе

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Static-указатель в абстрактном классе

Re: Static-указатель в абстрактном классе

Romeo » 14 дек 2008, 20:20

Код: Выделить всё

list<Trial*> TrialList;
list<Trial*>::iterator Tx = TrialList.begin();
for (; Tx != Trial.end(); ++Tx)
{
   Trial* pT = *Tx;
   pT->Print();
}

Re: Static-указатель в абстрактном классе

Monopo » 14 дек 2008, 17:27

Код: Выделить всё

class Trial
{
        public:
        virtual void Print()=0;
};
Наследниками этого класса являются класс Test и класс Exam (у него еще есть потомок FinalExam). В Test и FinalExam метод Print() переопределяется по-своему.

И бадья обо всех Trial'ских объектах (Test и FinalExam) должна храниться в списке, как я понимаю, таком:

list<Trial*> TrialList;
list<Trial*>::iterator Tx = TrialList.begin();

Так вот у меня проблема такая. Не знаю, как в цикле "пока Tx != TrialList.end()" вызывать функцию Print для объекта Tx??

Re: Static-указатель в абстрактном классе

Alezis » 23 сен 2008, 01:16

Твой код у меня скомпилялся без проблем на VC6.0. Если не определить указатель, то тоже появляются такие же ошибки, т.е. 'Unresolved external'

Код: Выделить всё

Transport* Transport: :p Head = NULL;

Static-указатель в абстрактном классе

Monopo » 22 сен 2008, 19:28

Код: Выделить всё

class Transport
{
        public:
        Transport()
        {}
        ~Transport()
        {}
        static void Print();
        virtual void Show()=0;
        void Add(void);

        private:
        static Transport *pLast; //Указатель на последний элемент в списке объектов
        Transport* pNext;//на следующий после элемента
        static Transport *pHead; //соответственно, на первый

        protected:
        char pName[100];
        static int Count;
};

class Auto :p ublic Transport //Transport---Auto
{
//...
};

class Train :p ublic Transport // Transport---Train
{
//...
};

class Express :p ublic Train
{
//...
};

//остальная всячина

Выдает ошибки:

Код: Выделить всё

  [Linker Error] Unresolved external 'Transport: :p Head' referenced from /*...*/
  [Linker Error] Unresolved external 'Transport: :p Last' referenced from  /*...*/

Как решить эту проблему? Как определить статические указатели? Пробовал присваивать так называемый NULL или 0, все одно и то же!

Вернуться к началу