2013-05-04 81 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 2013-05-04 02:45:44

+0

啊我不知道你可以转发声明类(我来自纯C) - 谢谢 – mchen 2013-05-04 02:56:12

回答

3

您可能必须添加clsC前向声明。

template<class T> class clsC; 

把这条线放在clsA的定义之前。

此外,以下行

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

应改写为

std::vector< clsA<T> > a; 
因为编译器的

误解符号 “>>”。

相关问题