2011-10-11 4 views
0

나는 포인터/포인터 타입을 인자로 넘기는 것을 막기 위해 typeid()==typeid() 형태의 호출을 감싸는 wrapper를 작성하려고한다.부분 템플릿 전문화 - 유형을 인수로 전달 하시겠습니까?

지금 전화가 typeid(ClassA)==typeid(arg) 인 곳에서 safesametype(ClassA, arg) 또는 비슷한 것으로 바꾸고 싶습니다. 그런 다음 컴파일 타임에 두 인수 중 실제로 포인터를 참조하지 않는지 확인해야합니다.

Loki 라이브러리의 기능을 사용하여 거의 거기에 도착했지만 꽤 없습니다. 현재 safesametype<ClassA, SuperClassOfA>(arg)으로 전화를 걸 수 있습니다. 여기서 SuperClassOfAarg입니다.

누구도 SuperClassOfA 사양을 삭제할 수있는 아이디어가 있습니까? 현재 소스입니다.

미리 감사드립니다.

Broes

답변

3

그냥 템플릿 매개 변수를 교환 (PS 어떤 솔루션 typeid를 사용하지 말해주세요).

template <class TestType, class ArgType> 
bool instanceof(const ArgType& object) { 
    // checks here 
    return typeid(TestType) == typeid(object); 
} 

전화로 :

instanceof<ClassA>(arg) 
+0

그래서 간단한 :) 감사합니다! –

관련 문제