【发布时间】:2012-02-04 16:26:57
【问题描述】:
我有一个对象容器,我只想返回它们的只读列表,因为对象是在容器中管理的。
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;
};
【问题讨论】:
-
C++ 中通常不需要说
this->。这不是 Java 或 PHP :-) -
我知道,但我喜欢写
this。 ;) -
我不太明白你想要什么:没有从列表中添加/删除对象,或者已经包含的对象没有被更改?
-
This answer 对这个想法的自相矛盾进行了一些有趣的讨论。如果可以更改元素,则只需重新分配元素即可更改列表。 究竟你想要什么是不可变的?列表的大小?好的,这已经解决了。列表中的成员,但不是他们的数据?从自定义迭代器返回的代理对象可能是可行的......
标签: c++