0

我正在尝试创建一个对象,其中 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'

老实说,我现在不知道有什么问题,我可能做错了,但任何帮助都将不胜感激!:)

此致

自由宁静

4

1 回答 1

1

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

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

但是window是一个参考,所以你可以这样做:

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

另外,我不会使用using namespace sf;,它会使代码在一段时间后变得混乱。

于 2013-10-15T18:39:40.463 回答