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
動作します。
これは可能ですか?