6

私は boost::any を使用してポリモーフィック型を持ちます。オブジェクトをその基本型にキャストできる必要があります。

class A {
    public:
        int x;
        virtual int foo()= 0;
};

class B : public A {
    public:
        int foo() {
            return x + 1;
        }
};


int main() {
    B* bb = new B();
    boost::any any = bb;
    bb->x = 44;
    A* aa = boost::any_cast<A*>(any);
}

main 関数のコードは、実行時に次のエラーをスローします。

terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::bad_any_cast> >'
  what():  boost::bad_any_cast: failed conversion using boost::any_cast
Abort trap

boost::any_cast コードの static_cast を reinterpret_cast に変更すると、うまくいくようです。ただし、その結果についてはわかりません。

あなたはなにか考えはありますか?

4

1 に答える 1