나는 기본 클래스 일부 ommitied 코드 분명히순수 가상 함수가없는 C++ 추상 클래스?
class ShapeF
{
public:
ShapeF();
virtual ~ShapeF();
inline void SetPosition(const Vector2& inPosition) { mPosition.Set(inPosition); }
protected:
Vector2 mPosition;
}
있다, 그러나 당신은 점을 얻는다. 나는 템플릿으로 사용하고, 재미 (ommited) 열거 형으로, 방법은 내가
class RotatedRectangleF : public ShapeF
{
public:
RotatedRectangleF();
virtual ~RotatedRectangleF();
protected:
float mWidth;
float mHeight;
float mRotation;
}
가 ShapeF가 위치와의 일을 사용하고 무엇을 정의하는 열거하고있어 모양의 종류를 결정하기 위해 유형은입니다. 접근 자 및 변경자가 있지만 메소드는 없습니다.
ShapeF를 추상 클래스로 만들어 아무도 ShapeF 유형의 객체를 초기화하지 못하도록 할 수 있습니까?
일반적으로, 이것은 그러나, 나는 현재 별도의 클래스의 충돌을 처리하고 ShapeF
//ShapeF.h
virtual void Collides(const ShapeF& inShape) = 0;
내에서 순수 가상 함수를함으로써 행할 수있다. 나는 모든 것을 옮길 수 있지만 순수 가상 함수가없는 클래스 추상을 만드는 방법이 있는지 궁금합니다.
태그 지정 (열거) 및 캐스팅을 사용하여 동적 디스패치를 다시 구현하려고합니다. 곧 향후에 문제가 될 것입니다. 나는 디자인을 재고 할 것이다. –
@ DavidRodríguez-dribeas 나는 이것이 가장 쉬운 방법이라고 생각했다. 모든 것을 static_casting했다. 다시 디자인하고 싶다면 모든 다형성이있는 ShapeF()를 모두 제거하고 각각의 모양을 자신의 사람으로 만듭니다. 다른 제안이 없다면? – MintyAnt