我有一个名为A
的类,其中包含private
动态分配的class B
个对象数组。我有一个指针数组(?)到B array
A
内部的元素(描述的第一个数组),我需要一个函数来帮助我修改这个数组(实际上让我得到了指向那些元素。)
最好的合作方式是什么?指针,参考文献?
我想到的一种方法是在A中创建一个getter,它返回数组的地址或数组的元素,但我认为它在类之外提供了太多的自由。
谢谢(抱歉让我对你的问题感到困惑)但我对这些事情很陌生。希望你能用这张图更好地理解:
答案 0 :(得分:0)
理想的解决方案是,在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
。可能性是无限的(有点),最好的选择取决于你的实际约束。
答案 1 :(得分:0)
如果你真的必须使用动态分配,但希望提供对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;
};