我有一个指向指针列表的指针,作为私有变量。我还有一个 getter,它返回指向列表的指针。我需要保护它免受更改。
我找不到如何使用reinterpret_cast 或const_cast 对此。
class typeA{
shared_ptr<list<shared_ptr<typeB>>> l;
public:
shared_ptr<list<shared_ptr<const typeB>>> getList(){return (l);};
};
编译器返回:
error: could not convert ‘((typeA*)this)->typeA::x’ from ‘std::shared_ptr<std::__cxx11::list<std::shared_ptr<typeB> > >’ to ‘std::shared_ptr<std::__cxx11::list<std::shared_ptr<const typeB> > >’|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
看起来就像const shared_ptr<list<shared_ptr<typeB>>>
and shared_ptr<const list<shared_ptr<typeB>>>
工作正常。
可以退货吗l
作为一个完整的常量,例如:
const shared_ptr<const list<shared_ptr<const typeB>>>
或者至少喜欢:
shared_ptr<list<shared_ptr<const typeB>>>
?
用引用代替指针不是一个选择。声明l
as shared_ptr<list<shared_ptr<const typeB>>>
也不是一个想要的解决方案。
编辑:不再有“int”了。
看来这不可能完全符合我的要求,但建议的解决方案很好。是的,复制指针是可以接受的。
我的错是我没有立即放入 typeB。我知道引用相对于指针的一些优点,但我希望有一些类似的解决方案。