我有这两个课程。

class ChessPiece
{
public:
    ChessPiece();
    virtual bool move() = 0;

};

class Bishop: public ChessPiece
{
public:
    Bishop();
    bool move();
};


我像这样创建后,试图确定ChessPiece的类型

ChessPiece* foo = new Bishop()


我正在尝试获取fooBishop)而不是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/

10-10 14:09