我有一个类:
class X {
vector<shared_ptr<T>> v_;
public:
vector<shared_ptr<const T>> getTs() { return v_; }
};
它有一个类型为
T
的shared_ptr
类型的向量。由于某种原因,它需要公开一种方法来返回该向量。然而,我不希望修改向量内容,也不希望被指向的对象被修改。所以我需要返回一个vector
类型的shared_ptr<const T>
向量。我的问题是,是否有有效的方法实现这个目标?如果我直接返回它,它可以工作,但它需要重构一个向量,这有点贵。
谢谢。
const
安全的吗?想象一下,如果类的客户端调用了getTs().push_back(shared_ptr_to_truly_const_object)
;那么你的类可以通过v_
修改truly_const_object
。(这也是为什么没有从T **
到const T **
的隐式转换的原因。) - ruakhvector<T> const&
将无法达到目的,因为他有一个vector<shared_ptr<T>>
并且想要返回一个vector<shared_ptr<T const>>
。我总体上同意你的观点,但在这种情况下,这根本不是一个选项。 - ildjarn