Abstrakte Klasse ohne rein virtuellen Membern
-
wxSkip schrieb:
theta schrieb:
EOutOfResources schrieb:
Hallo
Ich möchte eine abstrakte Klasse haben, welche jedoch keine rein virtuellen Membern besitzt. (Wie) geht das?
Das kannst Du so machen:
struct MyAbstractType { virtual ~MyAbstractType() = 0 { } };Ach nein. Und hier ist der Destruktor kein virtuelles Member?
Doch natürlich. Doch ich vermute, dem Fragesteller gings eher um "normale" Member Funktionen...

Ist nur eine Vermutung.
-
Meine Vermutung ist, dass der TE entweder nicht genau weiß, was er will, oder irgend eine Vorgabe hat, die so etwas besagt oder von der er denkt, dass sie das besagt.
-
Konstruktor einfach
privateoderprotected.
-
Privater ctor macht die Klasse auch nicht abstrakt.
-
Wie ist abstrakt definiert? Dass man keine Instanz der Klasse erstellen kann? Dann wäre die Klasse bei einem privaten Konstruktor natürlich nur nach außen hin abstrakt. Aber ich glaube, es kommt wirklich darauf an, was der TE will.
-
Ich möchte, dass die Klasse nur zur Vererbung existiert. Heisst, ich will Instanzen verbieten. Jedoch müsste man bei jeder Unterklasse die rein virtuellen Member überschreiben, was auch nicht ein Spass ist...
-
Eine Klasse ist abstrakt sobald sie eine rein virtuelle Memberfunktion hat. Wenn du nur erreichen willst dass man die Klasse von Außen nicht direkt instanzieren kann dann mach einfach alle Konstruktoren protected...
-
Dann kann man die Instanzen logisch erzeugen aber nicht Konstruieren, oder?
-
Dann können nur abgeleitete Klassen den Konstruktor verwenden!?
-
EOutOfResources schrieb:
Ich möchte, dass die Klasse nur zur Vererbung existiert. Heisst, ich will Instanzen verbieten. Jedoch müsste man bei jeder Unterklasse die rein virtuellen Member überschreiben, was auch nicht ein Spass ist...
Rein virtueller Destruktor mit Implementation, wie im 1. Post von mir.
-
Ok, werde es so machen.
Danke vielmals!
