2013-05-04 5 views
0

다른 템플릿 클래스 내에서 템플릿 클래스의 변수를 어떻게 사용합니까? 컴파일시 오류 clsC is not a template가 표시됩니다 - 왜?다른 템플릿 클래스 내에서 템플릿 클래스 유형의 변수 사용

---- MyClasses.h: ---- 

template <typename T> class clsA { 
public: 
    void Foo(typename clsC<T> arg) {...} 
    ... 
}; 

template <typename T> class clsB { 
public: 
    std::vector<clsA<T>> a; 
    ... 
}; 

template <typename T> class clsC { 
public: 
    clsC(typename clsB<T> arg) {...} 
    ... 
}; 

많은 질문이 있지만 내 문제를 해결하지 못했습니다.

+1

앞으로 선언 ... – Pubby

+0

아하 나는 당신이 수업을 선언 할 수 있다는 것을 몰랐습니다 (저는 순수한 C에서 왔습니다) - 감사합니다. – mchen

답변

3

아마도 clsC 전달 선언을 추가해야합니다.

template<class T> class clsC; 

clsA의 정의 바로 앞에이 줄을 넣으십시오. 또한

때문에 컴파일러

std::vector< clsA<T> > a; 

는 심볼 ">>"오해에

std::vector<clsA<T>> a; 

다시 작성해야 다음 줄.

관련 문제