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

What is best way to return readonly with changeable objects?

本文关键字:最佳 方法 是什么 只读 返回 可更改 对象      更新时间:2023-10-16

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

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;
};

您可能有一种特殊类型的迭代器,该迭代器与list的成员函数不兼容,这些迭代器采用迭代器来改变列表,以便您可以通过迭代器访问对象,但不能将它们传递给更改它们所属列表的函数。

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

返回一个const_iterator并声明方法const。