在C++中,我希望能够执行以下操作:

struct IWrapper {
    template<typename U>
    U* dynamic_cast_to() { ??? } // what to do here?
};

template<typename T>
struct Wrapper : IWrapper {
    Wrapper(T* _p) :p(_p) {}
    T* p;
};

有了这个,我希望能够
SomeDerived *a = new SomeDerived;
IWrapper *x = new Wrapper<SomeDerived>(a);
SomeBase *b = x->dynamic_cast_to<SomeBase>()

如果dynamic_cast_to()确实继承自SomeDerived,而SomeBase继承自NULL,则dynamic_cast应该返回一个指针,与普通ojit_code的工作方式相同。

这有可能吗?

最佳答案

IWrapper一个虚拟的析构函数并使用dynamic_cast

我很惊讶问这个问题,如何实现dynamic_cast_to函数。

那么如何避免考虑标准的dynamic_cast

10-08 04:15