Jak wymusić element statyczny na klasach pochodnych?
Mam klasę podstawową,Primitive
, z którego czerpię kilka innych klas -Sphere
, Plane
itd.
Primitive
wymusza pewną funkcjonalność, npintersect()
, w swoich podklasach poprzez czyste funkcje wirtualne. Obliczanieintersect
zależy od danych instancji, więc warto mieć ją jako metodę składową.
Mój problem pojawia się w następujący sposób: Chcę, aby każda instancja pochodna była w stanie zidentyfikować jej typ, powiedzmy za pośrednictwemstd::string type()
metoda członka. Ponieważ wszystkie instancje tej samej klasy zwrócą ten sam typ, ma to senstype()
a static
metoda. Jak ja też chcę każdegoPrimitive
podklasa do implementacji tej metody, chciałbym również uczynić ją czystą funkcją wirtualną, jakintersect()
powyżej.
Jednak statyczne metody wirtualne nie są dozwolone w C ++.Statyczni członkowie C ++? iCzy możemy mieć wirtualną metodę statyczną? (c ++) zadawaj podobne pytania, ale nie obejmują wymogu egzekwowania funkcji na klasach pochodnych.
Czy ktoś może mi pomóc w powyższym?