2012-08-05 4 views
0

에서 나는 유형 이름은 함수에 대한 포인터 템플릿 클래스가 있습니다. ..); 하지만 hZwCreateThread (... params ...) using() 연산자 오버로딩을 만들고 싶습니다. 이 코드 :연산자 "()"템플릿 클래스

const FuncType operator()() { return m_OrigFunc; }; 

은 그러한 방식으로 작동 만듭니다 : hZwCreateThread()을 (... PARAMS를 ...). 위에 쓴 것처럼 작동하게 만드는 방법?

답변

2

변환 연산자를 사용할 수 있습니다.

template <typename F> 
struct CHook { 
    F m_OrigFunc; 
    CHook (F func) : m_OrigFunc(func) {} 
    operator F() const { return m_OrigFunc; } 
}; 

이 같은 코드를 허용합니다 :

CHook<int(*)(const char *,...)> chook(printf); 
chook("%s\n", "Hello world!"); 
관련 문제