关于问题
我的问题很受欢迎,我找到了解决方案。然而,我不明白为什么当我在构造函数中分配一个窗口时会弹出一个错误,但是当我在初始化列表中分配一个窗口时,一切都正常。
好代码
class Player : public sf::CircleShape
{
private:
int X;
int Y;
sf::Image image;
sf::Texture texture;
sf::Sprite sprite;
sf::RectangleShape rectangle;
sf::RenderWindow& window;
public:
Player(sf::RenderWindow& win, sf::Image image) : window(win){}
};
错误码
class Player : public sf::CircleShape
{
private:
int X;
int Y;
sf::Image image;
sf::Texture texture;
sf::Sprite sprite;
sf::RectangleShape rectangle;
sf::RenderWindow& window;
public:
Player(sf::RenderWindow& win, sf::Image image)
{
window = win;
}
};
友情链接
下面是我找到的答案的链接。也许它会帮助你解决我的问题。我在那里找到了我的问题的答案,但我仍然不明白为什么我不能在构造函数中分配一个窗口。
use of deleted function ‘sf::RenderWindow& sf::RenderWindow::operator=(const sf::RenderWindow&)’
谢谢你的帮助:)
1条答案
按热度按时间2w2cym1i1#
我将使用简化版本。
好
坏了
为什么“坏”的版本不好?
为什么?
nullptr
初始化一个指针,并使它在以后指向一个对象。然而,如果函数没有其他方法知道它不是nullptr
,那么 * 可以 * 是nullptr
的东西也需要被函数检查。你不需要检查一个引用是否引用了任何东西。是的。如果你的坏版本是法律的的,这个承诺就不会成立了。还可以考虑一下,如果
x = b;
使x
引用b
,而不是它实际上做了什么,这对引用意味着什么:将b
保存的值赋给x
引用的对象。