0

以下のようなクラス階層があります。

class Base
{
    public:
    virtual Base& derived() const=0;
}

class Derived:public Base
{
    public:
    Derived& derived() const
    {
        return dynamic_cast<Derived&>(*this);
    }
    void test(){cout<<"Hi";}
}

の目的はderived()、正確な型の参照を返すことです。

int main()
{
    Derived d;
    Base &b = d;
    (b.derived()).test();
    return 0;
}

コンパイルエラーが発生します

can't find void test() in Base

確認したところ、Derived::derived()電話がかかってきました。Derived::derived()期待どおりに派生クラスへの参照を返さなかったようです。

4

2 に答える 2