¿Cómo hacer cumplir un miembro estático en las clases derivadas?

Tengo una clase base,Primitive, de la que derivo varias otras clases--Sphere, Plane, etc.

Primitive impone alguna funcionalidad, por ejemplointersect(), en sus subclases a través de funciones virtuales puras. El cálculo deintersect depende de los datos de la instancia, por lo que tiene sentido tenerlo como un método miembro.

Mi problema surge a continuación: Quiero que cada instancia derivada pueda identificar su tipo, por ejemplo, a través destd::string type() método miembro Como todas las instancias de la misma clase devolverán el mismo tipo, tiene sentido hacertype() a static método. Como también quiero cadaPrimitive Para implementar este método, también me gustaría convertirlo en una función virtual pura, comointersect() encima.

Sin embargo, los métodos virtuales estáticos no están permitidos en C ++.¿C ++ miembros virtuales estáticos? y¿Podemos tener un método estático virtual? (c ++) hacen preguntas similares pero no incluyen el requisito de imponer la función en las clases derivadas.

¿Alguien puede ayudarme con lo anterior?

Respuestas a la pregunta(4)

Su respuesta a la pregunta