2014-03-18 6 views
0

클래스를 멤버 함수의 기준으로 사용하는 것뿐만 아니라 클래스를 받아들이는 함수 포인터 (예 : 콜백 함수)를 가질 수 있도록 템플릿을 만들려고합니다. 전역 적으로 정의 된 함수를 갖는 방법.함수 포인터가있는 템플릿 클래스가 특수화를 허용하지 않습니다.

: 순간

나는 작품과 제가하려고 할 때

그러나 유형으로 콜백 : 콜백을 사용하고 같은 특정 구현을 추가 할 수

template <class c> 
struct Callback { 
    typedef void(c::*callback)(void); 
}; 

class VOIDCLASS { 
    void * void_ptr; 
}; 
// Callback template declaration as above here 
template <VOIDCLASS> 
struct Callback { 
    typedef void(*callback)(void); 
}; 

오류 C3855 : '콜백': 템플릿 매개 변수 'c'이 (가) 선언과 호환되지 않습니다. Visual Stud를 사용 중입니다. V110 (VS2012) 및 Windows 8.1

답변

2

의 플랫폼 IO 2013 도구 세트 명시 적 전문성은 다음과 같이 기록됩니다

template<> 
struct Callback<VOIDCLASS> { 
    typedef void(*callback)(void); 
}; 
1

나는 당신이 의미 생각 :

template <> 
struct Callback<VOIDCLASS> 
{ 
    typedef void(*callback)(void); 
}; 
관련 문제