중첩 클래스 Outer
의 생성자에 멤버 함수 Outer<T>::foo
에 대한 포인터를 전달하는 데 어려움이 있습니다 (ideone 참조).외부 클래스 템플릿의 멤버 func에 대한 포인터를 중첩 클래스에 전달
template<typename T1>
struct Outer
{
void foo()
{
}
Outer() : inner(&Outer::foo) // ERROR: compiles without &Outer::foo and Inner(F f), below
{
}
template<typename T2, void (T2::*F)()>
struct Inner
{
Inner(F f) // ERROR
{
}
};
Inner<Outer,&Outer::foo> inner;
};
int main()
{
Outer<int> outer;
}
내가 뭘 잘못하고 있니? 이것이 가능한지 궁금해지기 시작했습니다.
'F'는 형식이 아닙니다, 그것은 함수 포인터입니다. 객체가 무엇인지 이미 아는 경우 매개 변수를 전달하는 이유는 무엇입니까? – 0x499602D2
미안하지만 중첩 클래스가 표시되지 않습니다 ... –
@Bot Huh? 'Outer :: Inner'는 중첩 된 템플릿 유형입니다. –
cdhowie