Hi, im trying to learn how to use files for classes in order to make the code more clean, and when i create a class called "Ball" and I try to inherit the "Shape" class i get an error saying that such class doesent exist
This is the Ball.cpp file:
#include <SFML/Window.hpp>
#include <SFML/OpenGL.hpp>
#include <SFML/Graphics.hpp>
#include <iostream>
#include <ctime>
#include <cstdlib>
class Ball : public Shape {
public:
float xSpeed, ySpeed;
Ball() {
CircleShape shape(15);
}
virtual std::size_t getPointCount() const {
return 30;
}
virtual sf::Vector2f getPoint(std::size_t index) const {
static const float pi = 3.141592654f;
float angle = index * 2 * pi / getPointCount() - pi / 2;
float x = std::cos(angle) * m_radius.x;
float y = std::sin(angle) * m_radius.y;
return sf::Vector2f(m_radius.x + x, m_radius.y + y);
}
void moveBall() {
}
private:
Vector2f m_radius;
};
This is the main.cpp file:
#include <SFML/Window.hpp>
#include <SFML/OpenGL.hpp>
#include <SFML/Graphics.hpp>
#include <iostream>
#include <ctime>
#include <cstdlib>
#include "Ball.h"
using namespace sf;
using namespace std;
int main() {
RenderWindow window(VideoMode(1000, 600), "brick game");
Clock clock;
Ball ball = Ball();
RectangleShape player(Vector2f(200, 20));
player.setPosition(0, 580);
while (window.isOpen()) {
Event event;
while (window.pollEvent(event)) {
if (event.type == Event::Closed)
window.close();
}
float deltaTime = clock.restart().asSeconds();
Vector2i mousePos = Mouse::getPosition(window);
if (mousePos.x > 100 && mousePos.x < 900)
player.setPosition(Vector2f(mousePos.x - 100, 580));
window.clear();
window.draw(player);
window.display();
}
}
When I declare the class in main.cpp it works fine, but here it doesent.
The project uses static linking for the SFML files if it helps with anything
Shape is part of the sf namespace, so you need to do:
class Ball : public sf::Shape {
It worked in main.cpp because of the using namespace sf; near the top.
"using namespace" only applies to the cpp file it is in, not others in the project.
Shape is part of the sf namespace, so you need to do:
class Ball : public sf::Shape {
It worked in main.cpp because of the using namespace sf; near the top.
"using namespace" only applies to the cpp file it is in, not others in the project.
Oh wow thx a lot. Cant belive I missed it