c++ - 如何将模板实例化声明为类的友元?

标签 c++ templates friend

我的 node类需要相应的linked类成为 friend 。我写成

template <typename T>
class node{
    T value;
    node<T> *next;
    friend class linked<T>;
};

template <typename T>
class linked{
    linked();
    ~linked();
    node<T> *head;
};

我收到一个编译错误,提示 linked不是类模板。我如何申报 linked<T>成为node<T>的 friend ?

最佳答案

如果想让linked的实例化有相同的模板参数T成为友元,需要转发声明类模板linked 首先。

// forward declaration
template <typename T>
class linked;

template <typename T>
class node {
    ...
    friend class linked<T>; 
    // or since C++11 you can
    friend linked<T>; 
};

template <typename T>
class linked {
    ...
};

关于c++ - 如何将模板实例化声明为类的友元?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46065248/

相关文章:

java - 模板中的 Play2 Framework 浮点格式

c++ - 被通告扼杀的 friend 功能包括

android - 有没有让 Proguard 与 Cocos2d-x 一起工作的例子?和 twitter4j

c# - 如何在控制台应用程序中生成彩色 GUI?

c++ - 前向声明的类型和 "non-class type as already been declared as a class type"

c++ - 模板类 : No default constructor

scala - 如何从 sbt 0.10.0 项目中获取依赖项 jar 列表

ios - 使用 Phonegap 搜索和添加 Facebook 好友

c++ - 将整数映射到彩虹光谱中的颜色

c++ - 为什么 Boost.Range range_begin/end 自由函数对于 const 和非 const 引用都重载了?