实现迭代器复制构造函数

时间:2015-02-11 17:34:55

标签: c++

如何知道指向数据对象的指针是私有的,我如何正确实现迭代器的复制构造函数?我是否需要为此指针创建一个访问器?这不是一件坏事吗?

2 个答案:

答案 0 :(得分:3)

由于您在迭代器本身的实现中为迭代器定义了一个复制构造函数,因此无论是否有访问器都无需访问隐藏指针:即使它是私有的,复制构造函数也可以访问它,所以没有什么可担心的:

template <class T>
class MyIter {
    T *private_ptr;
public:
    MyIter(const MyIter<T> &other) : private_ptr(other.private_ptr) {}
    ... // More constructors and member functions
};

答案 1 :(得分:0)

类的所有成员函数都可以访问类的数据成员。这也适用于相同类型的不同对象。

class Foo()
{
private: 
    int bar;
public:
    void foobar(Foo & different) { bar = different.bar; }
};