使用可变对象返回只读的最佳方法是什么?

时间:2012-02-04 16:26:58

标签: c++

我有容器的容器,我想只返回它们的只读列表,因为对象是在容器内管理的。

class Object;

class Container {
public:
   typedef list<Object*> Objects;

   // first method, probably slow
   Objects getObjects() { return this->objects; }
   // another method, but i don't know if it isn't lacking somewhere else
   Objects::iterator getObjectsIt() { return this->objects.begin(); }
   // OR any better method exists ??

private:
   Objects objects;
};

2 个答案:

答案 0 :(得分:1)

返回const_iterator并声明方法const。

答案 1 :(得分:1)

你可能有一种特殊类型的迭代器,它与你的list的成员函数不兼容,它们使迭代器改变列表,这样你就可以通过迭代器访问对象但不将它们传递给函数这会改变他们所属的名单。

这假设迭代器不记得它们来自哪个容器。如果他们这样做,那么只需使特殊的迭代器类没有可以更改其父容器的函数。