함수 포인터가 템플릿 인수로 해당 함수 포인터를 사용하여 템플릿 클래스의 객체를 취하는 함수를 가리키는 함수 포인터. 가능한?

StackOverflow https://stackoverflow.com/questions/1082552

문제

더블 엑스

나는 다음과 같은 일을하고 싶다 :

typedef long (* fp)(BaseWindow< fp > & wnd, HWND hwnd, long wparam, long lparam);

그러나 컴파일 오류가 발생합니다.

오류 C2065 : 'FP': 선언되지 않은 식별자

어떻게 든 이것을 구현할 수 있습니까?

도움이 되었습니까?

해결책

템플릿 매개 변수의 유형에 자체가 포함되기 때문에 그렇지 않습니다. 이것은 유형의 끝없는 재귀로 산출 할 것입니다.

클래스 템플릿 전문화 대신에 기본 클래스를 수락하면 매우 가능합니다.

struct TemplateBase {

};

typedef long (*fpType)(TemplateBase&, HWND, long, long);

template<fpType FP>
struct BaseWindow : TemplateBase {

};


long sampleFunc(TemplateBase &b, HWND hwnd, long wparam, long lparam) {
  ...
}

int main() {
    BaseWindow<sampleFunc> bw;
    sampleFunc(bw, ...);
}

이것으로 무엇을하고 싶습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top