0
我试图编写一个包装形式为typeid()==typeid()
的调用,以防止传递指针/指针类型作为参数(一个容易出错和难以检测的错误)的包装。部分模板特化 - 将类型作为参数传递?
因此,现在呼叫将是typeid(ClassA)==typeid(arg)
,我想用safesametype(ClassA, arg)
或类似的东西替换它。然后,它应该在编译时检查两个参数是否都没有引用指针。
使用Loki库的功能,我几乎在那里,但不是很。我目前能够拨打电话safesametype<ClassA, SuperClassOfA>(arg)
,其中SuperClassOfA
是arg
的类型。
有没有人有关于如何删除SuperClassOfA
规范的想法?这是当前源:
#include "loki/NullType.h"
#include "loki/TypeTraits.h"
#include "loki/static_check.h"
#include <typeinfo>
class CannotCompareTypeIDofPointers{};
template<class T, class T2>
bool safesametype(const T& object){
LOKI_STATIC_CHECK(not Loki::TypeTraits<T>::isPointer, InvalidTypeIDCheck);
LOKI_STATIC_CHECK(not Loki::TypeTraits<T2>::isPointer, InvalidTypeIDCheck);
return typeid(object)==typeid(T2);
}
在此先感谢!
Broes
(PS取悦没有解决办法告诉我不要用typeid
)
这么简单:)谢谢! –