通过 get-Method 访问变量在类外不起作用

Access variable via get-Method not working outside class

本文关键字:不起作用 变量 get-Method 访问 通过      更新时间:2023-10-16

我的问题是,如果我在特定字段的设置方法中打印字段的能量值,它将被打印,但是如果我尝试在退出设置方法(代码行 2 或 3(后立即打印它,它的值始终为零。

使用 set-方法void Field::_dEnergy(double dEnergy)我想为vvoField[][]dEnergy赋值。

this->_vvoField()[uiY][uiX]._dEnergy(dCurrentEnergy);
std::cout << this->_vvoField()[uiY][uiX].dEnergy;
std::cout << "Energy: " << this->_vvoField()[uiY][uiX]._dEnergy();

我的get-/set方法看起来像这样:

void Field::_dEnergy(double dEnergy)       { this->dEnergy = dEnergy; std::cout << this->dEnergy; };
double Field::_dEnergy()                   { return this->dEnergy; };

(出于测试目的,我已将所有内容设置为公开。获取和设置以及实际变量dEnergyField.(

我是否对指定字段的括号有问题,或者我在这里有什么问题?如果我打印每个字段的能量,则没有一个设置为与零不同,所以我想 get 总是给出 0。

问题出在您的_vvoFields()函数上。

您返回的是一个临时变量(即副本(,而不是内部变量。

为了返回内部变量,请将函数声明修改为:

std::vector<std::vector<Field> >& _vvoFields()

请注意返回类型后面的&

通过此更改,您将返回对内部变量的引用,因此对它的任何修改都将更新内部值(因为两者是相同的(。

这与原始定义不同,在原始定义中,您返回内部值的副本,这是一个完全不同的实例。