我正在尝试创建一个基于其参数的专门化而重载的函数,例如:
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 风格的演员表,一切都按预期运行。此外,这种设计是否有任何潜在的陷阱?