이 코드가 있습니다.
template <class T>
class MyClass {
public:
template <class U>
void foo() {
U a;
a.invoke();
}
};
이 형식으로 원합니다.
template <class T>
class MyClass {
public:
template <class U>
void foo();
};
template <class T> /* ????? */
void MyClass<T>::foo() {
U a;
a.invoke();
}
어떻게 할 수 있습니까? 올바른 구문은 무엇입니까?
decl 클래스 안에서 decl 함수를 사용하지 않는 이유는 무엇입니까 ( codepad.org/wxaZOMYW 참조 )? 당신은 어쨌든 헤더에서 함수 자명 한 일 입니을 이동할 수 없습니다, 그래서 ...
—
hiobs
@hiobs : FWIW, 선언을 CPP 파일로 이동할 수 있습니다. 즉, 나는 해커 리를하기 위해 이것을 한 번만 수행했습니다. 이 경우이를 수행하는 방법을 아는 것이 중요합니다.
—
Thomas Eding 2013-08-01
때로는 함수 본문에 필요한 종속성을 정의한 후 함수 정의를 클래스 외부로 이동해야합니다. 이것은 클래스 A가 클래스 B를 사용하고 B도 A를 사용할 때 발생합니다.이 경우 A와 B를 선언 한 다음 A와 B 메서드를 정의합니다.
—
Wheezil 19