[英]How to modify a private array without giving too much freedom?
理想的解決方案是能夠給出的一個實例A a
和的處理程序指定的唯一實例B
歸a
的,但不必超過該總控制B
。
我建議在數組內使用一個簡單的索引:
class A
{
Array _array;
public:
// ctr, operator=, ...
const B& operator[](std::size_t index) const { return _array[index]; }
B& operator[](std::size_t index) { return _array[index]; } // if necessary
};
Ou還可以為此數組定義一個迭代器,或者返回A::_array::const_iterator
。 可能性是無限的,最好的選擇取決於您的實際約束。
如果確實必須使用動態分配,但希望提供對B的引用,則可以執行以下操作:
struct B {};
struct A
{
B& operator[](size_t i) {
return *_bs[i];
}
const B& operator[](size_t i) const {
return *_bs[i];
}
std::size_t size() const {
return _bs.size();
}
private:
std::vector<std::unique_ptr<B>> _bs;
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.