ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

dynamic_cast演算子

dynamic_cast演算子を使ったキャストでは正しくキャストできるときにはキャストを行うができないときはnullを返す。
派生クラスのオブジェクトをその親クラスのポインタで取得したとき、派生クラスへのdynamic_castを行うことによってそのオブジェクトがその派生クラスかどうか知ることができる。

#include <iostream>
using namespace std;

class Base
{
public:
    virtual void func() { cout << "base" << endl; }
};

class Child : public Base
{
public:
    void func() { cout << "child" << endl; }
};

int main()
{
    Base base;
    Base* pBase;
    Child child;
    Child* pChild;
    
    pBase = &child;

    pChild = dynamic_cast<Child*>(pBase);
    if(pChild)
        pChild->func();
    else
        cout << "Can't Cast" << endl;
}