gpt4 book ai didi

c++ - SFML 通过构造函数获取另一个类的窗口不起作用

转载 作者:行者123 更新时间:2023-11-28 07:21:41 26 4
gpt4 key购买 nike

我正在尝试创建一个对象,其中将 SFML RenderWindow 对象作为参数传递,但它不仅仅是工作,它一直提示指针并且我以错误的方式使用它们。

这是我的 .h 文件:

#include <iostream>
#include <SFML\System.hpp>
#include <SFML\Window.hpp>
#include <SFML\Graphics.hpp>

using namespace sf;

class Shot
{
private:

RenderWindow &mainWindow;

public:

Shot(RenderWindow &window);
void add(float x, float y, float velocity);

};

这是我的.cpp

#include "Shot.h"

Shot::Shot(RenderWindow &window) : mainWindow(&window)
{
mainWindow -> window;
}

void Shot::add(float x, float y, float velocity)
{
CircleShape shape(10);

shape.setPosition(Vector2f(x, y));

shape.setFillColor(Color::Yellow);

mainWindow.draw(shape);
}

错误:

Error   1   error C2248: 'sf::NonCopyable::operator =' : cannot access private member declared in class 'sf::NonCopyable'
Error 2 error C2248: 'sf::NonCopyable::operator =' : cannot access private member declared in class 'sf::NonCopyable'

老实说,我现在不知道问题出在哪里,我可能做错了,但我们将不胜感激! :)

最好的问候

自由 Restful

最佳答案

在您的 .cpp 文件中,您可以:

Shot::Shot(RenderWindow &window) : mainWindow(&window)
{
mainWindow -> window;
}

但是 window 是一个引用,所以你可以简单地做:

Shot::Shot(RenderWindow &window) : mainWindow(window)
{}

此外,我不会使用 using namespace sf;,它会使代码在一段时间后变得困惑。

关于c++ - SFML 通过构造函数获取另一个类的窗口不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19367179/

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