我目前正在使用 C++ 开发国际象棋引擎,在该引擎中,我正在尝试修改另一个名为“ChessBoard”的类“ChessTile”内的字符串变量“piece”。
无论如何,当我使用一个函数返回一个类,然后修改该类时,它不会改变源变量,我想知道你是怎么做到的。
这是我写的一个简单的脚本来演示:
#include <iostream>
#include <string>
class child {
private:
int myVar;
public:
child(int v) {
myVar = v;
}
int getVar() {
return myVar;
}
int setVar(int Svar) {
this->myVar = Svar;
return 0;
}
};
class parent {
public:
child baby = child(0);
child findMyChild(int var) {
if (var == 1) {
return baby;
}
}
};
parent DAD;
int main() {
std::cout << DAD.findMyChild(1).getVar() << std::endl;
DAD.findMyChild(1).setVar(50);
std::cout << DAD.findMyChild(1).getVar() << std::endl;
}
这个的输出是:
0
0
但我希望它是:
0
50
如有必要,我也可以发布我的国际象棋引擎。谢谢!
最佳答案
在您的代码中,findMyChild()
正在返回 baby
的拷贝(按值返回的函数),像这样使用按引用返回。
child& parent::findMyChild(int var) {
if (var == 1)
{
return baby;
}
/* other codes */
return baby;
}
关于c++ - 找到后更改类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53096504/