对于非模板类,我可以在头文件中使用forward声明。但是当我在模板类中使用它时,它给了我错误。
我必须包含头文件,我想知道原因。
class Pu;
template <typename T>
class Pt()
{
void test(Pu<T> u);
}
答案 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. ";"