gpt4 book ai didi

c++ - 无法修改类中的对象 vector

转载 作者:行者123 更新时间:2023-11-27 23:59:09 25 4
gpt4 key购买 nike

我试图访问我的 vector 中的一个对象并更改一些属性,但它并没有修改它。 (对不起法国代码)

 class Quincaillerie
{
vector<Caisse> vCaisses;
public:
Quincaillerie(int NBCaisse);
vector<Caisse> GetCaisses() const { return vCaisses; }
};

这是我想要访问和更改的 vector vCaisses

class Caisse
{
int tempsFile;
public:
Caisse();
int GetTempsFile() const { return tempsFile; }
void AjouterTempsFile(int t) { tempsFile = t; }
};

这是类

Caisse::Caisse() : tempsFile(0)
{
}

Quincaillerie::Quincaillerie(int NBCaisse) : vCaisses(NBCaisse, Caisse())
{
}

现在当我尝试这样做的时候

int main()
{
Quincaillerie Magasin(NBCAISSES);
/****Here's the problem****/
Magasin.GetCaisses().at(0).AjouterTempsFile(100);
cout << Magasin.GetCaisses().at(0).GetTempsFile() << endl;
/****Does not work****/
}

本应计算 100,但计算 0

感谢帮助

最佳答案

尝试返回 vector<Caisse> &来自 GetCaisses()而不是 vector<Caisse> .

如果您的 GetCaisses()返回 vector<Caisse> 按值,只有 vCaisses拷贝在对象实例中被返回。

因此您修改了一个拷贝,然后查询另一个未修改的拷贝。

你应该再写一个GetCaisses()那不是const如果要修改返回值;像

const vector<Caisse> & GetCaisses() const
{ return vCaisses; }

vector<Caisse> & GetCaisses()
{ return vCaisses; }

这样,GetCaisses()方法返回对 vCaisees引用并且您可以修改它(如果您修改从非 const 版本收到的 vector )。

关于c++ - 无法修改类中的对象 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40432381/

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