Vererbungsproblem
-
Hallo zusammen,
ich habe ein komisches Vererbungsproblem und hoffe, dass ihr mir helfen könnt. Ich habe eine Klasse A, welche folgende Funktionen definiert:
void foo(AST* ast); virtual void foo(AST* ast, bool flag, int cnt)=0;wobei das erste foo in A auch definiert wird. Nun habe ich eine Klasse B, welche von A erbt, ala:
public B: public A{ using A::foo; void B::foo(AST* ast, bool flag, int cnt){ ... } }Wenn ich in meiner mein schreibe:
A *a; B b; a = &b; a->foo(ast, true, 0);geht und läuft es wunderbar. Mache ich daraus:
A *a; switch(whatA}{ case typeB: B b; a = &b; break; case typeC: ... }//End switch a->foo(ast, true, 0);bekomme ich ne Exception: pure virtual method called ...
Warum ????? Jemand nen Tip?
Danke. Uwe
-
uwerothfeld schrieb:
Warum ????? Jemand nen Tip?
Reduzier Dein Problem auf ein kleines, komplettes und kompilierbares Programm. Anhand der Code-Fetzen mit Syntaxfehlern kann man das schlecht sagen.
Gruß,
SP
-
uwerothfeld schrieb:
Hallo zusammen,
ich habe ein komisches Vererbungsproblem und hoffe, dass ihr mir helfen könnt. Ich habe eine Klasse A, welche folgende Funktionen definiert:
void foo(AST* ast); virtual void foo(AST* ast, bool flag, int cnt)=0;wobei das erste foo in A auch definiert wird. Nun habe ich eine Klasse B, welche von A erbt, ala:
public B: public A{ using A::foo; void B::foo(AST* ast, bool flag, int cnt){ ... } }Wenn ich in meiner mein schreibe:
A *a; B b; a = &b; a->foo(ast, true, 0);geht und läuft es wunderbar. Mache ich daraus:
A *a; switch(whatA}{ case typeB: B b; a = &b; break; case typeC: ... }//End switch a->foo(ast, true, 0);bekomme ich ne Exception: pure virtual method called ...
Warum ????? Jemand nen Tip?
Danke. Uwe
Wie's aussieht, zeigt a beim Aufruf der Methode auf ein Objekt, das es schon gar nicht mehr gibt...
-
upps, wie peinlich, stimmt. das passiert, wenn man copy & past macht. ei ei. ich geh mich mal in die ecke stellen und schämen
vielen dank!uwe