2015-02-11 84 views
1

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

+1

可能,您不需要复制构造函数或赋值运算符为您的迭代器(如果是这样,您可能会有一个可疑的设计)。你可以提供一个例子。 – 2015-02-11 17:39:30

+0

@DieterLücking我似乎并不需要一个,谢谢你的评论。 – 2015-02-11 18:04:30

回答

2

自定义的迭代器本身的实现内部的迭代器拷贝构造函数,就没有必要使隐藏的指针访问,使用或不使用访问:拷贝构造函数将有机会获得它甚至如果它是私人的,所以没有什么可担心的:

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

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

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

@DieterLücking'foobar()'是一个函数而不是构造函数。 – NathanOliver 2015-02-11 17:41:41