未声明 [=10=] 存在于 Header,但未在 Class 来源中识别
Undeclared Identifier-Declarations Present In Header, But Unidentified In Class Source
所以,我遇到了一个可能非常简单的问题,但我似乎无法弄清楚是什么原因造成的。
我有一个名为 "Game" 的 C++ class,由 Game.h 中的 class 声明组成
和 Game.cpp.
中的源定义
我已将 "Game.h" 包含在我的 "Game.cpp" 中,但由于某些原因 Visual Studio 似乎无法识别 Game.h 中的 class 声明。
我将不胜感激任何帮助我试图弄清楚为什么会这样,以及为什么我会收到以下错误:
'MyCharacter' : undeclared identifier
和 '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
删节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;
}
}
完整代码可以在这里找到:
http://pastebin.com/x6KhDxgL
提前感谢您对此提供的任何帮助。
尝试
int Game::Run()
而不是
int Run()
在Game.cpp中,HandleKeyPressed
也一样,因为是Game
class的方法。根据您的 Character.h
,您可能还需要初始化 MyCharacter
。
void HandleKeyPressed(sf::Keyboard::Key PressedKey){
在Game.cpp应该是
void Game::HandleKeyPressed(sf::Keyboard::Key PressedKey){
与 int 相同 运行()
所以,我遇到了一个可能非常简单的问题,但我似乎无法弄清楚是什么原因造成的。
我有一个名为 "Game" 的 C++ class,由 Game.h 中的 class 声明组成 和 Game.cpp.
中的源定义我已将 "Game.h" 包含在我的 "Game.cpp" 中,但由于某些原因 Visual Studio 似乎无法识别 Game.h 中的 class 声明。
我将不胜感激任何帮助我试图弄清楚为什么会这样,以及为什么我会收到以下错误:
'MyCharacter' : undeclared identifier
和 '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
删节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;
}
}
完整代码可以在这里找到: http://pastebin.com/x6KhDxgL
提前感谢您对此提供的任何帮助。
尝试
int Game::Run()
而不是
int Run()
在Game.cpp中,HandleKeyPressed
也一样,因为是Game
class的方法。根据您的 Character.h
,您可能还需要初始化 MyCharacter
。
void HandleKeyPressed(sf::Keyboard::Key PressedKey){
在Game.cpp应该是
void Game::HandleKeyPressed(sf::Keyboard::Key PressedKey){
与 int 相同 运行()