Make classes.cpp a header instead ( so it becomes classes.h ), add #include "classes.h" in Main.cpp and delete the forward declaration. See if it works.
Also, App.Clear() and App.Display() should be in the game loop if you want continuous movement, as the screen needs to be cleared and displayed several times every second. Right now what you are doing is that you get the MouseX when the App opens and draw the bat there, but without displaying anything. Notice that App.Clear() and App.Display() are not in the game loop, so they will never be executed, since the App will be closed when you get to that part of the code.
Here's how a game loop should work:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
While (app.IsOpened() )
{
Clear();
Get Input();
Process Input ();
Draw Objects ();
Display();
}
|
What happens is that every second, the game executes these operations many times, but the application appears fluent because we cannot see more than about 20 frames per second. That's why games look bad with low FPS, you can actually notice the objects being drawn.
Also, it is better to have variables in a class as private, and write a method if you want to operate with them.