C ++ абстрактный класс без чисто виртуальных функций?
У меня есть базовый класс
class ShapeF
{
public:
ShapeF();
virtual ~ShapeF();
inline void SetPosition(const Vector2& inPosition) { mPosition.Set(inPosition); }
protected:
Vector2 mPosition;
}
Очевидно, с каким-то пропущенным кодом, но вы понимаете. Я использую это как шаблон, и с некоторыми забавными (опущенными) перечислениями, способ определить, какую форму я использую
class RotatedRectangleF : public ShapeF
{
public:
RotatedRectangleF();
virtual ~RotatedRectangleF();
protected:
float mWidth;
float m,Height;
float mRotation;
}
ShapeF выполняет свою работу с позиционированием и перечислением, определяющим тип. У него есть аксессоры и мутаторы, но нет методов.
Можно ли сделать ShapeF абстрактным классом, чтобы никто не пытался создать экземпляр объекта типа ShapeF?
Как правило, это выполнимо, имея чисто виртуальную функцию в ShapeF
//ShapeF.h
virtual void Collides(const ShapeF& inShape) = 0;
Однако в настоящее время я имею дело со столкновениями в отдельном классе. Я могу все переместить, но мне интересно, есть ли способ сделать класс абстрактным ... без чисто виртуальных функций.