가능한 중복 :
How to use local classes with templates?템플릿 인스턴스화 기능 로컬 클래스
그램 ++ 4.4 템플릿으로 기능 로컬 클래스를 복용 템플릿 함수에 대한 호출을 컴파일 거부 매개 변수. 좋아요 :
// Given this:
template <typename C>
int f(const C& c) {
return c.g();
}
// This compiles fine:
struct C1 {
int g() const { return 42; }
};
int h1() {
return f(C1());
}
// But this doesn't:
int h2() {
struct C2 {
int g() const { return 42; }
};
return f(C2()); // error: no matching function for call to "f(h2()::C2)"
}
// Nor does this:
int h3() {
struct C3 {
int g() const { return 42; }
};
return f<C3>(C3()); // same error
}
무엇이 있습니까? 이 작업을 어떻게 수행합니까? (실제 프 로그 램에서 "h"는 멤버 함수이고 "C"는 중첩 클래스 여야하므로 "h"가 속한 클래스의 친구가됩니다.)
해결 방법을 이용해 주셔서 감사합니다. "C"는 한 곳에서만 사용되기 때문에 불행한 일입니다.하지만 적어도 그렇게해서는 안되는 것들을 공개하지 않아도됩니다. – zwol