【发布时间】:2018-05-19 13:26:56
【问题描述】:
我有这样的东西:
template <typename T,typename K>
class Ring
{
typedef struct Node
{
T data;
K key;
Node * next;
Node * prev;
};
Node * head;
public:
class iterator
{
private:
Node * ptr;
friend class Ring;
}
我想通过迭代器类到 Node*ptr 以返回 get_value(iterator x) 数据和键等方法。我该如何做这个省略功能的朋友班?我想让那个 Node *ptr 不能被用户使用。
template <typename T,typename K>
K& Ring<T,K>::get_key(iterator & iter)
{
Node * ptr = iter.ptr;
return ptr->key;
}
我想返回我节点的 ptr-> 键,但是没有朋友类我无法访问 Node * ptr ,所以我完全不知道如何访问该值。
【问题讨论】:
-
你能提供一个你想写的代码sn-p吗?
-
我已经更新了对主要问题的回答:)
-
为什么要避开朋友圈?如果我无法访问它的
ptr,我将如何构造这样的迭代器? -
对于我来说
get_key是Ring的成员也没什么意义,因为它只返回iterator.ptr->key,这与Ring有什么关系? -
private: //protected:?
标签: c++ linked-list iterator