gpt4 book ai didi

c++ - 当我需要在其他地方修改它们时,我应该通过引用返回成员 vector 吗?

转载 作者:行者123 更新时间:2023-11-28 04:56:01 25 4
gpt4 key购买 nike

在下面的代码中,B中的方法会修改A的成员vector,为了实现,我通过引用返回vector。还有其他更好的做法吗?

class A {
public:
vector<int> &GetData() { return data_; }
private:
vector<int> data_;
};

class B {
public:
void Method(A *a) {
vector<int> &data = a->GetData();
data[0] = 0;
data[1] = 0;
data[2] = 0;
}
};

最佳答案

好吧,您可以通过多种方式来实现,但没有一种标准的方式来实现。

你可以像你说的那样做,或者公开成员:

class A {
public:
std::vector<int> data_;
};

class B {
public:
void Method(A* a) {
a->data_[0] = 0;
(...)
};

你也可以让 B 成为 A 的友元类,然后将 data_ 设为私有(private),如下所示:

class A {
private:
friend class B;

std::vector<int> data_;
};

class B {
public:
void Method(A* a) {
a->data_[0] = 0;
(...)
};

这实际上取决于您将如何使用 data_ 成员。

关于c++ - 当我需要在其他地方修改它们时,我应该通过引用返回成员 vector 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47109208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com