我有这两个课程。
class ChessPiece
{
public:
ChessPiece();
virtual bool move() = 0;
};
class Bishop: public ChessPiece
{
public:
Bishop();
bool move();
};
我像这样创建后,试图确定ChessPiece的类型
ChessPiece* foo = new Bishop()
我正在尝试获取
foo
(Bishop
)而不是ChessPiece
的类型。谢谢
最佳答案
好吧,有一些方法可以做到,看看动态转换:
class A
{
public:
virtual void Foo() = 0;
};
class B : public A
{
public:
void Foo() { }
};
void Test()
{
A* bar = new B();
if (B* test = dynamic_cast<B*>(bar))
{
// use test here
}
delete bar;
}
或者,您可以将一个枚举存储在国际象棋棋子类中,以定义棋子ID。
关于c++ - 确定C++中的继承对象的类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27799924/