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 context

    Auch 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 .


Anmelden zum Antworten