模板类c ++友元函数

时间:2011-10-03 13:30:17

标签: c++ templates friend

我的代码与下面显示的结构相同。我在一个头文件中定义了两个容器类,每个容器类都有一个带有另一个类型参数的友元函数,所以我得到一个类似于'Class2'的编译错误 - 未声明的标识符。

尝试了一些事情,但没有解决。我认为如果在两个模板中再添加一个模板参数V并用它替换Class2<T>可能是一个解决方案,但如果我在程序中使用这些容器,事情会变得复杂。我还想把Class1和Class2分开进入不同的标题,然后包含在Class1 Class2中,反之亦然,但实际上我怀疑这可能会起作用。

我真的无法弄清楚如何解决这个问题所以请非常感谢你的帮助!

template<class T>
class Class1
{
  ...
  friend void function1(Class1<Class2<T>>&, const Class2<T>&);
  ...
};

template<class V>
class Class2
{
   ...
   friend void function2(Class1<V>);
   ...
};

1 个答案:

答案 0 :(得分:3)

在文件开头添加Class2的转发声明:

template<class V> class Class2;