Я пытаюсь создать объект, в котором объект 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
В вашем.cpp файле вы выполните:
Shot::Shot(RenderWindow &window) : mainWindow(&window)
{
mainWindow -> window;
}
но window
является ссылкой, поэтому вы просто можете сделать:
Shot::Shot(RenderWindow &window) : mainWindow(window)
{}
Кроме того, я бы не использовал using namespace sf;
, это может сделать код запутанным через некоторое время.