我想在生成的C ++代码中使用dynamic_cast
内在函数。宏定义如下:
#define jcast(T, v) (dynamic_cast<T*>(v))
不幸的是,由于生成了代码,可能会出现这种情况:
foo(jcast(UWiseObject, NULL));
编译器说:
error: `nullptr_t` is not a pointer.
在这种情况下如何解救NULL
?我真的想要这样的东西:
if (v)
return dynamic_cast<T*>(v);
else
return NULL;
答案 0 :(得分:4)
嗯,那是你的宏。写一些真正的C ++:
template<typename T, typename U>
T* jcast(U* u) { return dynamic_cast<T*>(u); }
template<typename T>
T* jcast(nullptr_t) { return nullptr; }