c++ - 模板类 C++ 友元函数

标签 c++ templates friend

我的代码与下面所示的结构相同。我在一个头文件中定义了两个容器类,每个容器类都有一个友元函数,其参数类型为另一个类,所以我得到一个编译错误,类似于“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/

相关文章:

c++ - 究竟什么是结(b 样条)

c++ - STL 算法的反向迭代

c++ - OpenGL 中的镜面照明问题

c++ - 外部模板和不完整类型

c++ - "Overloading"带有 SFINAE 的构造函数

c++ - 在 C++ 中,为什么不能使用另一个类的模板类型来为模板类成员函数加好友?

c++ - 不能使用友好的 CRTP 类的私有(private)构造函数

c++ - 从函数返回结构,如何检查它是否已初始化?

c++ - 创建和使用指向友元类方法的 func 指针

c++ - 内联导致覆盖虚函数的模板类的专门成员函数被忽略