dynamic_cast 宏救援 NULL
dynamic_cast macro rescue NULL
我想在生成的 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;
嗯,这就是适合您的宏。改为编写真正的 C++:
template<typename T, typename U>
T* jcast(U* u) { return dynamic_cast<T*>(u); }
template<typename T>
T* jcast(nullptr_t) { return nullptr; }
我想在生成的 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;
嗯,这就是适合您的宏。改为编写真正的 C++:
template<typename T, typename U>
T* jcast(U* u) { return dynamic_cast<T*>(u); }
template<typename T>
T* jcast(nullptr_t) { return nullptr; }