在另一个模板类中使用模板类类型的变量

时间:2013-05-04 02:42:42

标签: c++ class templates

如何在其他模板类中使用模板类的变量?在编译时,我收到错误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 个答案:

答案 0 :(得分:3)

您可能需要添加clsC前向声明。

template<class T> class clsC; 

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

另外,以下一行

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

应重写为

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

因为编译器误解了符号“&gt;&gt;”。