gpt4 book ai didi

c++ - 未在另一个函数中设置变量引用的问题

转载 作者:行者123 更新时间:2023-11-30 02:48:40 24 4
gpt4 key购买 nike

您好,我无法理解为什么在函数调用 changeAdBreak() 之后,“played”的值仍然是“false”。

在每个函数中,我都使用了一个引用参数来修改在 main() 函数内部创建的对象。

但是,当这个对象被传递到函数中时,“played”属性由于某种原因没有被设置。

#include <iostream>
#include <string>
#include <vector>
using namespace std;

class Video{
public:
bool played;
};

class AllVideos{
public:
vector<Video> ads;
};

void changeAd(Video& ad)
{
ad.played = true;
}

void changeAdBreak(AllVideos& mybreak)
{
changeAd(mybreak.ads[0]);
}

int main()
{
AllVideos mybreak;
Video my_ad;
my_ad.played = false;

mybreak.ads.push_back(my_ad);
vector<AllVideos> breaks;
breaks.push_back(mybreak);

cout << "ad played = " << breaks[0].ads[0].played << endl;
changeAdBreak(mybreak);
cout << "ad played = " << breaks[0].ads[0].played << endl;

return 1;
}

最佳答案

push_back 将创建拷贝,因此当您执行 breaks.push_back(mybreak); 时,将插入到 breaks 中的元素是与 mybreak 不同。

对原始对象调用 changeAdchangeBreak 不会更改插入到相应容器中的值。

关于c++ - 未在另一个函数中设置变量引用的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21860891/

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