强制转换以在编译时检查继承

关于这个问题:何时使用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

上一篇: cast to check inheritance at compile time

下一篇: When to use ref and when it is not necessary in C#