SFML возвращает окно в другой класс через конструктор, не работающий

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'

я, честно говоря, не знаю, какова проблема на данный момент, я, вероятно, сделал все это неправильно, но любая помощь будет действительно оценена! :)

С наилучшими пожеланиями

FreeSirenety

Теги:
pointers
window
sfml

1 ответ

1

В вашем.cpp файле вы выполните:

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

но window является ссылкой, поэтому вы просто можете сделать:

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

Кроме того, я бы не использовал using namespace sf; , это может сделать код запутанным через некоторое время.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню