템플릿을 사용하여 클래스와 같은 형질을 만들고 싶습니다. 한 가지 해결책은 이 부분적으로 멤버 함수를 특수화 한 다음 함수 포인터를 사용하여이를 참조하는 것입니다. 이param에 기반한 템플릿 화 된 멤버 함수 포인터 반환
enum M{
X,
Y
};
class A {
//member vars
M m;
//member funcns
template<> foo<X> (int, int);
template<> foo<Y> (int, int);
typedef double (A::*xy)(int,int);
xy goo;
void init(){
goo = CHOOSE(m);
}
xy SELECT (M p){
switch(p){
case X:
return foo<X>
}
}
지금 나는 m에 따라, (끈적 거리는에 값을 할당이 필요한 foo는 오티 지적하고자처럼
그래서 내가 가지고있는 것은 현재 보인다.하지만 쓰는 것도 구문 오류이라고합니다. 선택 함수를 작성하는 방법에 어떤 도움 나는 그것의 서명을 의미, 어떻게 대응 templatised 기능을
['std :: function'] (http://en.cppreference.com/w/cpp/utility/functional/function) 및 ['std :: bind'] (http : //en.cppreference.com/w/cpp/utility/functional/bind). –
XY 문제는 아마도? 실제 문제는 무엇을 해결하려고합니까? –
아, 실제로 * 전체 오류를 포함하여 하나 또는 두 번의 시도가 표시 될 수도 있습니다. –