Werden Methoden nicht geerbt??
-
Hallo. Ich komme ursprünglich aus der Delphi-Ecke und habe jetzt ein Problem, das ich mir nicht erklären kann.
Folgenden Quellcode hab ich:
#include <stdio.h> class A { public: void doSomething() { printf("Test"); } }; class B : A { }; int main() { B b; b.doSomething(); }
Nach meiner Einschätzung sollte die Methode "doSomething()" von der Klasse B geerbt werden, der Aufruf sollte also gültig sein.
Doch leider ist er das nicht. Mein Compiler (GCC) gibt mir folgende Fehlermeldung:test2.cpp: In function
int main()': test2.cpp:5:
void A::doSomething()' is inaccessible
test2.cpp:16: within this contextAuch die Deklaration der Methode als virtuell ändert nichts daran.
Warum funktioniert das so nicht?
Danke im Voraus.
-
Das einzige Problem ist, dass bei Klassen private voreingestellt ist.
class B:A{}
ist demanch gleich
class B:private A{}
was wiederun heißt das die Methoden private sind. Du musst
class B:public A{}
schreiben!
-
Ah, stimmt, davon hab ich zuletzt etwas gelesen.
Danke schön!!Hehe, es ist schön mal wieder Anfängerfragen posten zu können, da kriegt man nicht erst 3 Wochen später eine Antwort :p .