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