为什么我在使用模板时不能使用前向声明?

时间:2015-02-10 14:21:21

标签: c++ templates

对于非模板类,我可以在头文件中使用forward声明。但是当我在模板类中使用它时,它给了我错误。

我必须包含头文件,我想知道原因。

class Pu;

template <typename T>
class Pt()
{
     void test(Pu<T> u);
}

1 个答案:

答案 0 :(得分:6)

如果你做得好,它的效果很好!

请记住,Pu类模板,而不是类,因此必须将其声明为:

template <typename T>      // N.B. this line
class Pu;

template <typename T>
class Pt                   // N.B. no "()"
{
     void test(Pu<T> u);
};                         // N.B. ";"

live demo