如何知道指向数据对象的指针是私有的,我如何正确实现迭代器的复制构造函数?我是否需要为此指针创建一个访问器?这不是一件坏事吗?
答案 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; }
};