“ Setter”方法不更改属性,但是测试方法可以吗? (以最少的可复制示例重新提交)

问题描述 投票:0回答:1
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函数。

我正在使用播放器类,并将其作为参数p传递给onTrigger()方法:

float rel = p->getTarget().getRelationship();

这是被称为“ getter”的东西

cout << p->getTarget().setRelationship(rel - 10.0);

这是被称为“设定者”。

我试图创建一个只输出“ test”的测试方法,然后我将其称为“ setter”方法。有效。所以问题肯定出在setter的定义中……但是看起来很完美:(

c++ methods getter setter
1个回答
0
投票

此方法

NPC Player::getTarget() {
    return *target;
}

创建一个NPC类型的临时对象。因此,更改此临时对象不会影响target指向的对象。

© www.soinside.com 2019 - 2024. All rights reserved.