C++ 通过引用将对象传递给函数不会更改此对象
所以基本上,我试图将一个对象传递给我的函数C++ 通过引用将对象传递给函数不会更改此对象,c++,function,pointers,reference,C++,Function,Pointers,Reference,所以基本上,我试图将一个对象传递给我的函数Attack(): 在函数onClick中,变量current通过值而非引用传递。我假设应该通过引用传递: void onClick(Vector2f mouse_position, Character ¤t, Character *target, Position &positionx) 请注意,参数current已更新为引用 编辑: 查看Attack函数的主体,如果满足打印名称的行,是否确定满足if条件语句if(oth
Attack()
:
在函数
onClick
中,变量current
通过值而非引用传递。我假设应该通过引用传递:
void onClick(Vector2f mouse_position, Character ¤t, Character *target, Position &positionx)
请注意,参数current
已更新为引用
编辑:
查看
Attack
函数的主体,如果满足打印名称的行,是否确定满足if条件语句if(other.defensive>0)
和if(Attack>other.defensive)
?onClick()
函数最重要的部分是target=&positionx.positioning[i][j]
。但是它是通过引用传递的,所以它不应该成为问题。关于“目标”的问题不是吗?就我所见,“当前”修改了“目标”,或者至少应该修改它。SKCoder是对的。我想修改“*target”,而“current”是运行“Attack()”方法的对象。我将current更改为reference,但仍然不是working@Azam当我在onClick函数外使用Attack时,一切都很正常。为什么要手动调用析构函数另一个。~Character()代码>这个析构函数做什么?这可能会导致奇怪的行为,几乎没有理由手动调用析构函数。我想确保,如果角色的生命值下降到0,它将被销毁
void onClick(Vector2f mouse_position, Character current, Character *& target, Position &positionx)
{
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 5; j++)
{
if ((mouse_position.x >= 245 + i * 164 && mouse_position.x <= 370 + i * 164) &&
(mouse_position.y >= 56 + j * 201 && mouse_position.y <= 221 + j * 201))
{ // there's a 2d map with cards on those positions
target = &positionx.positioning[i][j];
current.Attack(*target);
}
}
}
}
Character *current = new Character();
Character *target = NULL;
if ((event.type == Event::MouseButtonPressed) && (event.mouseButton.button == Mouse::Left))//SFML lib
{
Vector2i pos = Mouse::getPosition(window);
Vector2f position = (Vector2f)pos;
onClick(position, *current, target, positionx);
} // target is selected after clicking on it
void onClick(Vector2f mouse_position, Character ¤t, Character *target, Position &positionx)