通过 get-Method 访问变量在类外不起作用
Access variable via get-Method not working outside class
我的问题是,如果我在特定字段的设置方法中打印字段的能量值,它将被打印,但是如果我尝试在退出设置方法(代码行 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; };
(出于测试目的,我已将所有内容设置为公开。获取和设置以及实际变量dEnergy
在Field
.(
我是否对指定字段的括号有问题,或者我在这里有什么问题?如果我打印每个字段的能量,则没有一个设置为与零不同,所以我想 get 总是给出 0。
问题出在您的_vvoFields()
函数上。
您返回的是一个临时变量(即副本(,而不是内部变量。
为了返回内部变量,请将函数声明修改为:
std::vector<std::vector<Field> >& _vvoFields()
请注意返回类型后面的&
。
通过此更改,您将返回对内部变量的引用,因此对它的任何修改都将更新内部值(因为两者是相同的(。
这与原始定义不同,在原始定义中,您返回内部值的副本,这是一个完全不同的实例。
相关文章:
- 通过 get-Method 访问变量在类外不起作用
- 键盘不起作用 - Arduino Uno - 与变量有关的多个错误
- (C++)虽然循环一次不起作用,但我引入了多个变量
- 指针变量在 cout 函数中不起作用
- C++结构模板变量快捷方式定义不起作用
- C++ 互斥锁可以交叉方法/变量吗?如果是这样,为什么在这里不起作用?
- 变量和常数的C++划分不起作用
- C++ Eclipse:二叉搜索树节点>数据=变量似乎不起作用
- swap(int&, int&) 函数不起作用,当交换不使用临时变量时?
- 为什么变量算术不起作用?
- 为什么这个条件变量不起作用
- 在循环中更改数组的变量不起作用
- 使用模量来找出数字是否可以除去不起作用的变量
- 添加到私人变量不起作用
- 更改生成文件中变量的值不起作用
- 需要使用 Book* 头变量重载运算符,但不起作用
- SFINAE:检测成员变量的存在在 g++ 上不起作用
- 全球向量变量上的外部不起作用
- 我无法正确获取这些变量声明...为什么这些参数不起作用?我只是将 n 值设置为数组长度
- 全球变量不起作用Raspberry Pi