Funktionsparameter vom Typ einer abstrakten Klasse



  • Hallo Forum,

    ich habe eine abstrakte Klasse (AbstractClass), von der einige andere nicht-abstrakte Klassen erben. Ich benötige nun eine Funktion, die als Parameter irgendeine Instanz einer erbenden Klasse erhält; zur besseren Vorstellung könnte das z.B. eine Funktion sein, die das Erzeugen einer Instanz einer erbenden Klasse in einer Textdatei loggt. Ich habe versucht, eine Funktion zu schreiben, die als Parameter die vererbende abstrakte Klasse erhält, also Funktion(AbstractClass InstanzDerKlasse), erhalte dann aber die Fehlermeldung, eine Instanz einer abstrakten Klasse könne nicht erzeugt werden (was an sich ja auch sinnvoll ist). In Delphi z.B. wäre so eine Funktion jedoch möglich - beim Aufruf der Funktion würde ja auch nicht eine Instanz der erbenden Klasse übergeben (diese Klasse kann ja nicht instanziert werden), sondern eine Instanz einer erbenden Klasse.

    Wie muss ich so eine Funktion in C++ schreiben, ohne die Funktion für jede erbende Klasse neu zu schreiben, sondern nur einmal in der vererbenden Klasse? Vielen Dank für Antworten.



  • Korrektur:

    ...würde ja auch nicht eine Instanz der _ver_erbenden Klasse übergeben...



  • Du würdest eine const-Referenz übergeben:

    class Abstract { ... };
    class Concrete: public Abstract { ... };
    
    void foo(Abstract const& a) { ... }
    ...
    Concrete c;
    foo(c);
    


  • Das klingt gut. Morgen werd ich es gleich versuchen.


Anmelden zum Antworten