Как применить статический член к производным классам?

У меня есть базовый класс Primitive, из которого я получаю несколько других классов --Sphere, Planeи т. д.

Primitiveприменяет некоторые функции, например intersect(), к своим подклассам посредством чисто виртуальных функций. Вычисление intersectзависит от данных экземпляра, поэтому имеет смысл использовать его как метод-член.

Моя проблема возникает в следующем :Я хочу, чтобы каждый производный экземпляр мог идентифицировать свой тип, скажем, с помощью метода-члена std::string type(). Поскольку все экземпляры одного и того же класса будут возвращать один и тот же тип, имеет смысл сделать type()методом static. Поскольку я также хочу, чтобы каждый подкласс Primitiveреализовывал этот метод, я также хотел бы сделать его чистой виртуальной функцией, как intersect()выше.

Однако статические виртуальные методы не разрешены в C++. Статические виртуальные члены C++? и Можем ли мы иметь виртуальный статический метод? (c++) задают похожие вопросы, но они не включают требования принудительного применения функции к производным классам.

Может ли кто-нибудь помочь мне с вышеизложенным?

6
задан Community 23 May 2017 в 12:14
поделиться