C++ 未在其他函数中设置变量引用的问题
您好,我很难理解为什么在调用C++ 未在其他函数中设置变量引用的问题,c++,pointers,reference,C++,Pointers,Reference,您好,我很难理解为什么在调用changeAdBreak()函数之后,“played”的值仍然是“false” 在每个函数中,我都使用了一个引用参数来修改main()函数内部创建的对象 但是,当这个对象被传递到函数中时,由于某种原因,不会设置“played”属性 #include <iostream> #include <string> #include <vector> using namespace std; class Video{ public
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;
}
#包括
#包括
#包括
使用名称空间std;
课堂录像{
公众:
布尔演奏;
};
课堂所有视频{
公众:
矢量广告;
};
void changeAd(视频和广告)
{
ad.played=true;
}
void changeAdBreak(所有视频和mybreak)
{
changeAd(mybreak.ads[0]);
}
int main()
{
所有视频我的休息;
我的视频广告;
我的广告播放=错误;
mybreak.ads.push_back(我的广告);
向量中断;
休息。推回(我的休息);
coutpush_back
将创建副本,因此当您执行中断时。push_back(mybreak);
,将插入到中断中的元素与mybreak
不同
对原始对象调用changeAd
或changeBreak
不会更改插入到相应容器中的值。向量中断定义为
vector<AllVideos> breaks;
包含对象mybreak的副本
。因此,现在您有两个类型为AllVideos的对象:一个名为mybreak,另一个为vector Break。它们占用不同的内存
调用函数changeAdBreak
changeAdBreak(mybreak);
您更改了对象mybreak,但向量break中的对象没有更改,您输出了其数据成员
cout << "ad played = " << breaks[0].ads[0].played << endl;
cout << "ad played = " << breaks[0].ads[0].played << endl;
cout << "ad played = " << breaks[0].ads[0].played << endl;
cout << "ad played = " << mybreak.ads[0].played << endl;
changeAdBreak( breaks[0] );