簡體   English   中英

如何在不給予過多自由的情況下修改私有數組?

[英]How to modify a private array without giving too much freedom?

我有一個名為A的類,其中包含一個private ,動態分配的class B對象數組。 我在A (描述的第一個數組)中有一個指向B array元素的指針(?)數組,我需要一個函數來幫助我修改該數組(實際上讓我獲取並指向這些元素)。

最好的合作方式是什么? 指針,參考?
我想到的一種方法是在A內創建一個吸氣劑,該吸氣劑返回數組或數組元素的地址,但是我認為它在類之外提供了太多的自由。

謝謝(並很抱歉使您困惑我的問題),但是對於這些事情我還是很陌生。 希望您能通過此圖更好地理解:

理想的解決方案是能夠給出的一個實例A a和的處理程序指定的唯一實例Ba的,但不必超過該總控制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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM