在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
?