Mam w swoim programie 4 klasy: Element (abstrakcyjna), Liczba i Działanie (potomne) i osobna Stos. Program będzie wykonywał inne operacje na stosie w zależności od tego czy dostanie do przetworzenia obiekt Liczba, czy Działanie, dlatego stworzyłem funkcję wirtualną:
#include <iostream>
class Element
{
protected:
Element* next;
public:
Element() : next (0) {};
Element(const Element & e);
friend class Stos;
virtual void przetwarzaj(Stos & s) = 0;
};
class Liczba : public Element
{
private:
double el;
public:
Liczba(double l);
Liczba(double l, Element* e);
const double pokaz_l() { return el; }
virtual void przetwarzaj(Stos & s);
};
class Dzialanie : public Element
{
private:
char el;
public:
Dzialanie(char z);
Dzialanie(char z, Element* e);
const double pokaz_z() { return el; }
virtual void przetwarzaj(Stos & s);
};
class Stos
{
private:
Element* top;
int count;
public:
Stos() : top(0), count (0) {};
~Stos();
};
Dlaczego przy takim kodzie kompilator wyrzuca mi:
‘Stos’ has not been declared
(chodzi o pierwszą linię w której występuje wirtualna funkcja)
Wszystkie funkcje są zdefiniowane w odpowiednim pliku.