我的代码与下面显示的结构相同。我在一个头文件中定义了两个容器类,每个容器类都有一个带有另一个类型参数的友元函数,所以我得到一个类似于'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>);
...
};
答案 0 :(得分:3)
在文件开头添加Class2
的转发声明:
template<class V> class Class2;