Dziedziczenie->inicjalizacja

0

class Monitor
{
protected:
const int nrSeryjny, szerokosc, wysokosc;
int czestotliwosc;
public:
Monitor(int, int, int);
Monitor(int, int, int, int);
int pobierzCzestotliwosc(int);
void ustawCzestotliwosc(int);
};

class LCD : public Monitor
{
private:
Glosnik glosnik;

public:
LCD(int nrSeryjny, int szerokosc,int wysokosc, int liczbaKanalow=1)
:
nrSeryjny(nrSeryjny),
szerokosc(szerokosc),
wysokosc(wysokosc)
{}

};

zad1.cpp: In constructor ‘LCD::LCD(int, int, int, int)’:
zad1.cpp:50: error: class ‘LCD’ does not have any field named ‘nrSeryjny’
zad1.cpp:51: error: class ‘LCD’ does not have any field named ‘szerokosc’
zad1.cpp:52: error: class ‘LCD’ does not have any field named ‘wysokosc’
zad1.cpp:52: error: no matching function for call to ‘Monitor::Monitor()’
zad1.cpp:26: note: candidates are: Monitor::Monitor(int, int, int, int)
zad1.cpp:25: note: Monitor::Monitor(int, int, int)
zad1.cpp:20: note: Monitor::Monitor(const Monitor&)
zad1.cpp:52: error: no matching function for call to ‘Glosnik::Glosnik()’
zad1.cpp:7: note: candidates are: Glosnik::Glosnik(int)
zad1.cpp:3: note: Glosnik::Glosnik(const Glosnik&)

Nie bardzo wiem dlaczego wywala te bledy. Prosilbym o wskazanie bledow.

0

o_O

Konstruktor klasy pochodnej MUSI wywołać konstruktor klasy bazowej! Jeśli nie robisz tego jawnie na liście inicjalizacyjnej to on na siłę szuka konstruktora bezparametrowego. Nie ma takiego, więc jest błąd.
Ogólnie chciałeś chyba zrobić coś takiego:

class Monitor
  {
  protected:
    const int nrSeryjny, szerokosc, wysokosc;
    int czestotliwosc;
  public:
    Monitor(int n, int s, int w, int c = 0):nrSeryjny(n),szerokosc(s),wysokosc(w) {} //to konstruktor tej klasy powinien te wartości ustawić! założyłem że częstotliwość była tym parametrem którego można było nie podać
    int pobierzCzestotliwosc()
    {
      return czestotliwosc;
    }
    void ustawCzestotliwosc(int c)
    {
      czestotliwosc = c;
    }
  };

class LCD : public Monitor
  {
  private:
    Glosnik glosnik;
  public:
    LCD(int nrSeryjny, int szerokosc,int wysokosc, int liczbaKanalow=1) 
    :Monitor(nrSeryjny,szerokosc,wysokosc),glosnik(liczbaKanalow) //ten konstruktor woła sobie konstruktor swojej bazy, tak dzała OOP ;]
    {}
  };

1 użytkowników online, w tym zalogowanych: 0, gości: 1