Nachträglich eingefügte Funktionen e. Klasse in abgeleiteter Klasse unbekannt
-
Hallo!
Es gibt zwei Klassen: eine Basisklasse und eine die davon abgeleitet wurde. Alles kein Problem. Aber als ich in der Basisklasse später ein paar (zum Teil überladene) Funktionen eingefügt habe, sind diese plötzlich nicht mehr in der abgeleiteten Klasse bekannt. Irgendwie werden sie nicht "mitvererbt".class a
{
public:
virtual void F(); //am Anfang schon da
void F(Überladung); //später hinzugefügt
void F2(); //am Anfang schon da
};class b : public a
{
public:
void F(); //virtuelle Funktion wird überschrieben und im Quelltext neu
//definiert
}Wenn ich jetzt folgendes mache:
b Instanz;
Instanz.F(Überladung);
ist die Funktion nicht bekannt und kompiliert nicht.Allerdings funktinieren sowohl Instanz.F2(); als auch Instanz.F();
Was mache ich falsch? Danke schonmal.
-
Bist du dir sicher, dass dein gesamtes Projekt neu kompiliert und gelinkt wurde?
-
class b : public a { public: using a::F; void F(); }
-
Was mache ich falsch?
http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&faq=Overload#Answ
http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&faq=oho#Answ
-
Danke Leute!
Ich wusste nicht dass man keine Überladungen Out-Of-Scope durchführen darf.
-
???? schrieb:
void F(); //virtuelle Funktion wird überschrieben und im Quelltext n
wenn du eine virtuelle funktion überschreibst, dann sollte die überschreibende funktion auch als virtuell deklariert sein:
virtual void F();