我的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作为 friend ,则需要首先转发声明类模板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++ - 如何将模板实例化声明为类(class)的 friend ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46065248/

10-11 20:22