함수 포인터가 템플릿 인수로 해당 함수 포인터를 사용하여 템플릿 클래스의 객체를 취하는 함수를 가리키는 함수 포인터. 가능한?
-
23-08-2019 - |
문제
더블 엑스
나는 다음과 같은 일을하고 싶다 :
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, ...);
}
이것으로 무엇을하고 싶습니까?
다른 팁
바로이 페이지의 관련 링크 섹션에서 : 자체 유형의 함수를 인수로 취하는 함수 포인터를 어떻게 입력 할 수 있습니까?
제휴하지 않습니다 StackOverflow