“Setter”方法没有改变属性,但测试方法输出"test"? (以最小的可重现示例重新提交)
“Setter” method not changing a property, but a test method outputs "test"? (Resubmitted with minimal reproducable example)
Player::Player() {
target = new NPC();
}
NPC Player::getTarget() {
return *target;
}
这是获取当前NPC内存地址的方法
NPC::NPC() {
relationship = -35.0;
}
float NPC::getRelationship() {
return relationship;
}
bool NPC::setRelationship(float r) {
relationship = r;
return false;
}
这些是 getter 和 setter 函数。
我正在使用播放器 class 并将其作为参数 p 传递给 onTrigger() 方法:
float rel = p->getTarget().getRelationship();
这是被调用的"getter"
cout << p->getTarget().setRelationship(rel - 10.0);
这是正在调用的 "setter"。
我试图创建一个只输出 "test" 的测试方法,我调用它来代替 "setter" 方法。有效。所以问题一定出在 setter 的定义中......但它看起来很完美:(
这个方法
NPC Player::getTarget() {
return *target;
}
创建 NPC 类型的临时对象。所以改变这个临时对象不会影响target指向的对象。
如果您想更改原始对象,则必须 return 通过引用将其
NPC & Player::getTarget() {
return *target;
}
Player::Player() {
target = new NPC();
}
NPC Player::getTarget() {
return *target;
}
这是获取当前NPC内存地址的方法
NPC::NPC() {
relationship = -35.0;
}
float NPC::getRelationship() {
return relationship;
}
bool NPC::setRelationship(float r) {
relationship = r;
return false;
}
这些是 getter 和 setter 函数。
我正在使用播放器 class 并将其作为参数 p 传递给 onTrigger() 方法:
float rel = p->getTarget().getRelationship();
这是被调用的"getter"
cout << p->getTarget().setRelationship(rel - 10.0);
这是正在调用的 "setter"。
我试图创建一个只输出 "test" 的测试方法,我调用它来代替 "setter" 方法。有效。所以问题一定出在 setter 的定义中......但它看起来很完美:(
这个方法
NPC Player::getTarget() {
return *target;
}
创建 NPC 类型的临时对象。所以改变这个临时对象不会影响target指向的对象。
如果您想更改原始对象,则必须 return 通过引用将其
NPC & Player::getTarget() {
return *target;
}