Piszę program, który służy do obsługi wypożyczalni (na zaliczenie). Zaprojektowałem już +/- klasy. Teraz zabrałem się za konstruktory i metody, i pojawiły się pierwsze problemy. Ze wcześniejszymi błędami sobie poradziłem, m.in. pola klasy ElementKolekcji zmieniłem z private na protected (nie wiem czy to eleganckie rozwiązanie). Nie bardzo wiem jak sobie poradzić.
Klasa ElementKolekcji
class ElementKolekcji
{
protected:
bool stan; //czy wypozyczone ? 0/1 nie/tak
string tytul;
string autor;
string gatunek;
short data_wypozyczenia[7];
short termin_zwrotu[7];
short data_wydania[7]; //ddmmrrrr
float cena;
short liczba_sztuk;
public:
ElementKolekcji(
string Ntytul,
string Nautor,
string Ngatunek,
//short Ndata_wypozyczenia[7],
//short Ntermin_zwrotu[7],
//short Ndata_wydania[7],
float Ncena,
short Nliczba_sztuk);
virtual ~ElementKolekcji();
void dodaj_pozycje();
void pobierz_pozycje();
};
Destruktor klasy ElementKolekcji
ElementKolekcji :: ElementKolekcji(
string Ntytul,
string Nautor,
string Ngatunek,
//short Ndata_wypozyczenia[7],
//short Ntermin_zwrotu[7],
//short Ndata_wydania[7],
float Ncena,
short Nliczba_sztuk)
{
tytul=Ntytul;
autor=Nautor;
gatunek=Ngatunek;
//data_wypozyczenia[7]=Ndata_wypozyczenia[7];
//termin_zwrotu[7]=Ntermin_zwrotu[7];
//data_wydania[7]=Ndata_wydania[7];
cena=Ncena;
liczba_sztuk=Nliczba_sztuk;
}
Klasa Ksiazka dziedzicząca po Element Kolekcji
class Ksiazka : public ElementKolekcji
{
private:
short id;
bool okladka; // 0/1 miekka/twarda
short liczba_stron;
short isbn[12]; // 13-cyfrowy ISBN
string wydawnictwo;
public:
Ksiazka(
string Ntytul,
string Nautor,
string Ngatunek,
string Nwydawnictwo,
//short Ndata_wydania[7],
//short Nisbn[12],
short Nliczba_sztuk,
short Nid,
short Nliczba_stron,
float Ncena,
bool Nokladka);
~Ksiazka();
};
Destruktor klasy Ksiazka
Ksiazka :: Ksiazka(
string Ntytul,
string Nautor,
string Ngatunek,
string Nwydawnictwo,
//short Ndata_wydania[7],
//short Nisbn[12],
short Nliczba_sztuk,
short Nid,
short Nliczba_stron,
float Ncena,
bool Nokladka
):ElementKolekcji(
Ntytul,
Nautor,
Ngatunek,
//short Ndata_wypozyczenia[7],
//short Ntermin_zwrotu[7],
//short Ndata_wydania[7],
Ncena,
Nliczba_sztuk
)
{
tytul=Ntytul;
autor=Nautor;
gatunek=Ngatunek;
wydawnictwo=Nwydawnictwo;
//data_wydania=Ndata_wydania[7];
//isbn[12]=Nisbn[12];
liczba_sztuk=Nliczba_sztuk;
id=Nid;
liczba_stron=Nliczba_stron;
cena=Ncena;
okladka=Nokladka;
}
Błędy:
undefined reference to vtable for ElementKolekcji'** **undefined reference to
vtable for ElementKolekcji'
obj\Debug\main.o||In function Ksiazka':** **undefined reference to
vtable for Ksiazka'
undefined reference to ElementKolekcji::~ElementKolekcji()'** **undefined reference to
vtable for Ksiazka'
undefined reference to `ElementKolekcji::~ElementKolekcji()'