问题描述
我有一堂这样的课:
template <typename T>
class Store {
private:
struct pointNode {
T data;
pointNode* next;
pointNode* prev;
pointNode() :data(0),next(nullptr),prev(nullptr) {}
pointNode(T n_data) : data(n_data),prev(nullptr) {}
const T& getValue() {
return this->data;
}
};
pointNode* head;
pointNode* tail;
public:
class Iterator {
using Iterator_type = Store<T>::pointNode;
public:
Iterator() = default;
Iterator(Iterator_type* rNode) {
current_node = rNode;
}
private:
Iterator_type* current_node;
};
};
我需要得到
Iterator_type* current_node;
获取此数据字段的正确方法是什么? 我知道您可以执行以下操作:
friend class Store;
在迭代器类中。但这被认为是正常的,还是有更漂亮的方法?谢谢
解决方法
执行此操作的规范方法是添加访问器函数,如下所示:
class Iterator
{
public:
Iterator_type* get_current_node() const {
return current_node;
}
private:
Iterator_type* current_node;
};
PS:请注意,默认构造函数 Iterator() = default;
未初始化 current_node
数据成员。