错误 C2248:'sf::NonCopyable::NonCopyable'

error C2248: 'sf::NonCopyable::NonCopyable'

本文关键字:NonCopyable C2248 sf 错误      更新时间:2023-10-16

我想在SFML库中创建简单的形状,但我无法弄清楚如何在多个文件中共享项目。我知道它看起来像什么,但我想知道为什么这不起作用

主文件:

#include <iostream>
#include <SFML/Graphics.hpp>
#include  "Ball.cpp"
using namespace std;
using namespace sf;
int main()
{
    RenderWindow win(VideoMode(800, 800), L"Rozdział 1");
    while (win.isOpen())
    {
        win.clear(Color::White);
        Event e;
        while (win.pollEvent(e))
        {
            if (e.type == Event::Closed)
                win.close();    
        }
        Ball ball(win);
        win.display();
    }
}

和ball.cpp

#include <iostream>
#include <SFML/Graphics.hpp>
using namespace std;
using namespace sf;
class Ball
{
public: Ball(RenderWindow win)
{
    CircleShape circle(50);
    circle.setPosition(0, 0);
    circle.setOutlineColor(Color::Red);
    circle.setOutlineThickness(2);
    Texture texture;
    if (!texture.loadFromFile("textura.png"))
        cerr << "Nie można załadować grafikin";
    circle.setTexture(&texture);
    win.draw(circle);
}
};

我必须创建这个球的列表,我是c++的新手,我只在Java中创建项目,但首先我想知道如何共享这个项目

按值传递sf::RenderWindow,因此它尝试创建一个副本,但sf::RenderWindow类不可复制,如错误消息所示。

通过引用传递,或者最好从sf::Drawable派生Ball类并实现draw()函数。