Aufruf von pure virtual member-Funktionen



  • Hallo, ich habe eine Klasse foo, die wie folgt deklariert ist

    class foo
    {
    
    public: 
    	foo();
    	void Enter(void);
    private:
    	virtual int a(int x)=0;
    	virtual int b(void)=0;
    	void c(void);  //edit: Tippfehler
    };
    

    Die Funktion "Enter" ist wie folgt definiert:

    void foo::Enter(void)
    {
    
    	a(5);
    	c();
    	b();
    }
    

    Das geht leider nicht, da a und b ja als abstrakt gekennzeichnet und somit in der Basisklasse nicht definiert werden.
    Dennoch ist die Definition der Enter-Fkt immer die selbe, also alle abgeleiteten Klassen verwenden diese Implementierung.
    Die abstrakten Methoden müssen dann von den abgeleiteten Klassen natürlich überschrieben werden.
    Gibt es eine Möglichkeit, in der Implementierung von Enter() in der abstrakten Basisklasse die beiden
    abstrakten Funktionen aufzurufen, ohne dass mir da Linker-Fehler um die Ohren fliegen?
    Oder muß ich in jeder abgeleiteten Klasse Enter() neu definieren, obwohl die
    Definition ja immer dieselbe ist?
    Dankeschön für Antworten...

    Gruß

    E-the-Real



  • das was du vorhast ist moeglich. dein beispiel
    funktioniert nicht, weil bei der funktion c das virtual
    fehlt.



  • Aber c() ist nicht virtual. Da hab ich mich vertippt, das "=0" muß weg.
    So, hab's editiert.

    Bei mir kommen da Linker-Fehler.



  • Alright, ich hab's raus.
    Dankeschön!


Anmelden zum Antworten