【发布时间】:2016-09-13 11:36:33
【问题描述】:
考虑以下代码:
class Child {
vector<Object>::iterator it;
}
class Parent {
vector<Object> objects;
Child getChild(int idx) {
Child ret;
ret.it = objects.begin() + idx;
return ret;
}
}
显然,孩子的寿命不能超过其父母,但我希望尝试调用类似 Child childThing = getParent().getChild(5) 的名称是合理的。我怎样才能防止这种情况?是否有强制保留Parent 实例的模式?如果可能的话,我不想复制objects,因为它的内容非常复杂。
【问题讨论】:
-
你不想复制对象,但是你复制了 Child
ret... -
这段代码的上下文是什么?
Child::it看起来像是悬空迭代器的承诺 -
@Jarod42
objects是Parent中的向量。复制Child是可以的,我只是不想将向量复制到返回的孩子中:) -
@wasthishelpful
Parent保证在创建后不会被更改。不过感谢您的意见,我会注意的!
标签: c++ object-lifetime