自分の質問を好きなように表現したかどうかはわかりませんが、例を挙げて説明します。
コードは次のとおりです。
class Shape;
class Circle;
class Triangle;
class Shape
{
Shape(void);
~Shape(void);
virtual void DrawShape(void) = 0;
}
class Circle : public Shape
{
/* .... constructor/destructor defined normally .... */
bool TestIntersection(Triangle* _triangle);
bool TestIntersection(Circle* _circle);
void DrawShape(void);
}
/* main.cpp */
...
Shape* shape;
Shape* circle = new Circle;
if(a == 0)
{
shape = new Circle;
}
else
{
shape = new Triangle;
}
circle->TestIntersection(shape);
Shape*からCircle*またはTriangle*への許容可能な変換がないというエラーが表示されます。
なぜこうなった?または、どの派生クラスが抽象クラスポインタに設定されているかを判断する方法が必要ですか?