gpt4 book ai didi

c++ - 类对象的参数没有改变

转载 作者:行者123 更新时间:2023-11-27 23:44:39 26 4
gpt4 key购买 nike

我有一个类:

class Edges
{
protected:
int capacity;
int flow;
public:
void set_capacity(int capacity);
void set_flow(int flow);
int get_capacity();
int get_flow();
}

void Edges::set_capacity(int capacity) { Edges::capacity = capacity; }
void Edges::set_flow(int flow) { Edges::flow = flow; }
int Edges::get_capacity() { return capacity; }
int Edges::get_flow() { return flow; }

我有一个类:

class Network
{
protected:
vector<Edges> edges_list;
public:
void add_edge(int capacity, int flow);
vector<Edges> get_edges_list() { return edges_list; }
}

void Network::add_edge(int capacity, int flow) {
Edges temp;
temp.set_capacity(capacity);
temp.set_flow(flow);
edges_list.pushback(temp);
}

接下来我这样做:

Network net;
net.add_edge(100, 500);
cout << net.get_edges_list()[0].get_flow() << endl; // I see 500

一切都很好,如果我在添加边后使用 get_capacity()get_flow() 我会得到我想要的(我现在设置的容量或流量) ).但如果我这样做:

net.get_edges_list()[0].set_flow(777);
cout << net.get_edges_list()[0].get_flow() << endl; // I see 500 again!

又看到500了!没有改变。我做错了什么?

最佳答案

您的方法 get_edges_list() 返回私有(private)成员的拷贝,您对此拷贝所做的任何更改都不会影响该成员。也许返回一个引用,或者通过提供 Network::set_flow_at(int flow,int index); 来使用适当的封装。

关于c++ - 类对象的参数没有改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51614415/

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