次のように、パラメーターの特殊化に基づいてオーバーロードされる関数を作成しようとしています。
class DrawableObject...;
class Mobile : public DrawableObject...;
class Game
{
AddObject(DrawableObject * object)
{
// do something with object
}
AddObject(Mobile * object)
{
AddObject(dynamic_cast<DrawableObject *>(object));
DoSomethingSpecificForSpecializedClass();
}
};
...しかし、私のMSコンパイラは私にこのエラーを与えています:
エラー C2681: 'Mobile *': dynamic_cast の式の型が無効です
どちらのクラスにも仮想関数があります。この状況でのアップキャストのキャストは間違っていますか? 私は C スタイルのキャストを試してみましたが、すべてが意図したとおりに機能します。また、この設計に潜在的な落とし穴はありますか?