Tumeg Temat założony przez niniejszego użytkownika |
Błąd z konstruktorem klasy bazowej w klasie pochodnej » 2014-04-23 19:02:53 Witam, mam tutaj taki kod: class Osoba { public: string imie; string nazwisko; Osoba( string imie, string nazwisko ); void show(); };
class Uczen : public Osoba { };
void Osoba::show() { cout << this->imie << " -> " << this->nazwisko << endl; }
Osoba::Osoba( string imie, string nazwisko ) { this->imie = imie; this->nazwisko = nazwisko; }
int main() { Osoba os( "Tomasz", "Kowalski" ); os.show(); Uczen x; return 0; }
Dopóki nie utworzę obiektu klasy Uczen wszystko jest ok. Po utworzeniu wyrzuca masę błędów: C:\Documents and Settings\USER\Pulpit\plik.cpp||In constructor 'Uczen::Uczen()':| C:\Documents and Settings\USER\Pulpit\plik.cpp|18|error: no matching function for call to 'Osoba::Osoba()'| C:\Documents and Settings\USER\Pulpit\plik.cpp|27|note: candidates are: Osoba::Osoba(std::string, std::string)| C:\Documents and Settings\USER\Pulpit\plik.cpp|8|note: Osoba::Osoba(const Osoba&)| C:\Documents and Settings\USER\Pulpit\plik.cpp||In function 'int main()':| C:\Documents and Settings\USER\Pulpit\plik.cpp|37|note: synthesized method 'Uczen::Uczen()' first required here | ||=== Build finished: 1 errors, 0 warnings ===|
Myślę, że to wina konstruktora w klasie bazowej - nie mogę go w żaden sposób "przerobić" tak, aby był widoczny w klasie pochodnej (raczej żeby wszystko normalnie działało). |
|
Adik80 |
» 2014-04-23 19:07:44 Nie masz konstruktora w klasie uczen, kompilator generuje domyslny konstruktor, ale nie moze znalezc domyslnego kosntruktora w klasie osoba. albo Dodaj wlasny konstruktor w klasie uczen wolajacy Osoba(imie, nazwisko) albo dodaj domyslny konstruktor w klasie osoba: Osoba() |
|
Tumeg Temat założony przez niniejszego użytkownika |
» 2014-04-23 19:16:55 class Uczen : public Osoba { Uczen( string imie, string nazwisko ); };
Uczen::Uczen( string imie, string nazwisko ) { Osoba.imie = imie; Osoba.nazwisko = nazwisko; } Nie za bardzo to działa, jak w tym konstruktorze odwołać się do składowych klasy Osoba ? Zielony jestem :) |
|
pekfos |
» 2014-04-23 19:30:53 Musisz zdefiniować konstruktor w Uczen, który wywołuje konstruktor Osoba, lub zdefiniować konstruktor domyślny w klasie Osoba. |
|
Tumeg Temat założony przez niniejszego użytkownika |
» 2014-04-23 19:35:27 class Uczen : public Osoba { Osoba( string imie, string nazwisko ); }; Dalej nie działa ;d, nie może ktoś napisać jak to ma wyglądać ? |
|
Monika90 |
» 2014-04-23 20:22:58 |
|
WaxerPL |
» 2014-04-24 10:00:54 Też jestem za tym, aby samemu szukać informacji w internecie, ale skoro chodzi o podstawy trzeba jasno wytłumaczyć na przykładzie. class Uczen : public Osoba { Uczen( string imieu, string nazwiskou ) : Osoba( imieu, nazwiskou ) { } };
int main() { Osoba os( "Jarek", "Kowalski" ); os.show(); Uczen ucz( "Marek", "Nowak" ); ucz.show; return 0; }
Mam nadzieję, że pomogłem |
|
michal11 |
» 2014-04-24 12:47:00 @Up
Bez przesady, 2 osoby napisały mu co ma zrobić, jedyny wysiłek to znaleźć jakąś informacje na ten temat, przeczytać i zastosować. |
|
« 1 » 2 |