我的代码与下面所示的结构相同。我在一个头文件中定义了两个容器类,每个容器类都有一个友元函数,其参数类型为另一个类,所以我得到一个编译错误,类似于“Class2” - 未声明的标识符。
尝试了一些东西,但没有解决。我认为如果向两个模板再添加一个模板参数 V 并替换 Class2<T>
这可能是一个解决方案,但如果我在我的程序中使用这些容器,事情会变得更加复杂。我还想将 Class1 和 Class2 分成不同的 header ,然后包含在 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>);
...
};
最佳答案
在文件开头为 Class2
添加前向声明:
template<class V> class Class2;
关于c++ - 模板类 C++ 友元函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7635684/