强制转换以在编译时检查继承
关于这个问题:何时使用reinterpret_cast?
我找到了某事。 喜欢这个:
template<typename T> bool addModuleFactoryToViewingFactory(ViewingPackage::ViewingFactory* pViewingFactory)
{
static_cast<ModuleFactory*>(reinterpret_cast<T*>(0)); // Inheritance compile time check
...
}
这是一个很好的方法来检查T
是否可以在编译时输出到ModuleFactory
?
我的意思是,要检查程序员是否将有效的东西放入addModuleFactoryToViewingFactory<T>(...)
的<>
,
这是好的,好还是唯一的方法?
问候
你正试图解决一个不需要解决的问题。 由于C ++ 11,我们有类型特征,允许我们在Template Metaprogramming中明确地检查这样的事情。
例如,is_base_of
http://en.cppreference.com/w/cpp/types/is_base_of
链接地址: http://www.djcxy.com/p/73753.html