gpt4 book ai didi

c++ - 使用 getter 函数传递引用参数时的意外行为

转载 作者:行者123 更新时间:2023-11-28 06:42:38 25 4
gpt4 key购买 nike

我正在使用 sfml getter 函数传递引用参数,例如:

ball.update(time, pad_player.getGlobalBounds(), pad_ia.getGlobalBounds(), score);

但是出现这个问题:

Pong.cpp: In member function ‘void Pong::run()’:
Pong.cpp:30:82: error: no matching function for call to ‘Ball::update(sf::Time&, sf::FloatRect, sf::FloatRect, Score&)’
ball.update(time, pad_player.getGlobalBounds(), pad_ia.getGlobalBounds(), score);
^
Pong.cpp:30:82: note: candidate is:
In file included from Pong.hpp:5:0,
from Pong.cpp:2:
Ball.hpp:10:7: note: void Ball::update(sf::Time&, sf::FloatRect&, sf::FloatRect&, Score&)
void update(sf::Time& delta, sf::FloatRect& p1, sf::FloatRect& p2, Score& score);
^
Ball.hpp:10:7: note: no known conversion for argument 2 from ‘sf::FloatRect {aka sf::Rect<float>}’ to ‘sf::FloatRect& {aka sf::Rect<float>&}

所以如果我为此改变:

    sf::FloatRect player = pad_player.getGlobalBounds();
sf::FloatRect ia = pad_ia.getGlobalBounds();
ball.update(time, player, ia, score);

程序运行正常。

为什么?

最佳答案

错误消息显示 Ball::update 需要参数 2 和 3 的非常量 FloatRect 引用。临时返回值不能绑定(bind)到符合标准的编译器中的非常量引用, 所以错误是完全正确的。

如果您可以选择将 Ball::update 更改为采用 const FloatRect&,您应该能够完成您正在尝试的操作。

关于c++ - 使用 getter 函数传递引用参数时的意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25685609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com