Search code examples
c++headeridentifierundeclared-identifier

Undeclared Identifier-Declarations Present In Header, But Unidentified In Class Source


So, I'm having what is likely a pretty simple problem, but I can't seem to figure out what is causing it.

I have a C++ class called "Game" consisting of a class declaration in Game.h and a source definition in Game.cpp.

I have included "Game.h" in my "Game.cpp", but for some reason Visual Studio doesn't seem to recognize the class declarations within Game.h.

I'd appreciate any help I could get trying to figure out why this is the case, and why I am getting the following errors: 'MyCharacter' : undeclared identifier and 'HandleKeyPressed' : identifier not found.

Game.h:

------------------------------------------------------------------------------------------------------------------
#pragma once
#ifndef Game_Header
#define Game_Header


#include <SFML/Graphics.hpp>
#include <SFML/Audio.hpp>
#include "Character.h"
#include "FloorPlatform.h"

class Game
{
public:
        Game();
        ~Game();
        int Run();
        void HandleKeyPressed(sf::Keyboard::Key);
        Character MyCharacter;
};

#endif // !Game_Header

Abridged Game.cpp

#include "Game.h"


Game::Game()
{
}


Game::~Game()
{
}

int Run(){
        sf::RenderWindow MainGameWindow(sf::VideoMode::getDesktopMode(), "A Test Game");

        //Start Game Loop
        while (MainGameWindow.isOpen()){
                while (MainGameWindow.pollEvent(event)){
                        //Handle some other events here...
                        if (event.type == sf::Event::KeyPressed){
                                HandleKeyPressed(event.key.code);
                        }
                }


                MainGameWindow.clear(sf::Color::White);

                MyCharacter.Instance.Circle.setPosition(MyCharacter.PlayerLocation);
                MainGameWindow.draw(MyCharacter.Instance.Circle);
                MainGameWindow.display();

        }

        return 0;
}

void HandleKeyPressed(sf::Keyboard::Key PressedKey){
        switch (PressedKey)
        {
        case sf::Keyboard::A:
             MyCharacter.PlayerLocation.x -= 16;
        break;

        }
}

Full code can be found here: http://pastebin.com/x6KhDxgL

Thanks in advance for any help I can get with this.


Solution

  • Try

    int Game::Run()
    

    instead of

    int Run()
    

    in Game.cpp, the same for HandleKeyPressed, because it's the method of the Game class. Depending on your Character.h you may need to initialize MyCharacter, too.