我有对象的容器,我只想返回它们的只读列表,因为对象是在容器内管理的。
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。