Wie erzwinge ich einen statischen Member für abgeleitete Klassen?
Ich habe eine Basisklasse,Primitive
, von denen ich mehrere andere Klassen ableiten -Sphere
, Plane
, usw.
Primitive
Erzwingt einige Funktionen, zintersect()
, in seinen Unterklassen durch rein virtuelle Funktionen. Die Berechnung vonintersect
hängt von den Instanzdaten ab, daher ist es sinnvoll, sie als Mitgliedsmethode zu verwenden.
Mein Problem tritt im Folgenden auf: Ich möchte, dass jede abgeleitete Instanz ihren Typ identifizieren kann, z. B. durch astd::string type()
Mitglied Methode. Da alle Instanzen derselben Klasse denselben Typ zurückgeben, ist es sinnvoll, dies zu tuntype()
a static
Methode. Da will ich auch jedenPrimitive
Unterklasse, um diese Methode zu implementieren, möchte ich es auch zu einer rein virtuellen Funktion machen, wieintersect()
über.
Statische virtuelle Methoden sind in C ++ jedoch nicht zulässig.C ++ statische virtuelle Mitglieder? undKönnen wir eine virtuelle statische Methode haben? (c ++) stellen ähnliche Fragen, enthalten jedoch nicht die Anforderung, die Funktion für abgeleitete Klassen zu erzwingen.
Kann mir jemand bei dem oben genannten helfen?