在 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
工作方式相同。
这甚至可能吗?