【发布时间】:2015-01-06 13:42:54
【问题描述】:
我有这两个课程。
class ChessPiece
{
public:
ChessPiece();
virtual bool move() = 0;
};
class Bishop: public ChessPiece
{
public:
Bishop();
bool move();
};
在我这样创建 ChessPiece 之后,我正在尝试确定它的类型
ChessPiece* foo = new Bishop()
我正在尝试获取 foo (Bishop) 而不是 ChessPiece 的类型。
谢谢
【问题讨论】:
-
如果基类没有虚函数,则不能这样做。
-
确定它的目的是什么?你到底想达到什么目的?
-
试图确定某个棋子是国王还是别的什么
-
很可能有更好的解决方案,它不涉及确定类型。如果您向我们提供更多信息,我们会尽力提供帮助。
-
问你的对象是什么是错误的。你应该告诉它做一些事情。
move就是一个很好的例子。无需尝试确定这种类型的碎片如何移动,您只需说出piece.move(),虚函数就会做正确的事情。