因此,我將我的遊戲引擎從SDL移植到SFML,現在我的輸入系統出現問題。 Input.hSFML輸入系統問題
#ifndef BULLWHIP_INPUT_H
#define BULLWHIP_INPUT_H
#include
class bc_Input
{
public:
bool bm_KeyHit(sf::Key::Code key);
bool bm_KeyDown(sf::Key::Code key);
int bm_MouseX();
int bm_MouseY();
void bm_init(sf::RenderWindow app);
private:
sf::RenderWindow App;
const sf::Input& input;
};
#endif
Input.cpp
#include "Input.h"
bool bc_Input::bm_KeyDown(sf::Key::Code key)
{
return in.IsKeyDown(key)
}
bool bc_Input::bm_KeyHit(sf::Key::Code key)
{
sf::Event event;
while(App.GetEvent(event) && event.Type == sf::Event::KeyPressed)
{
switch(event.Key.Code)
{
case key: return true; break;
default:
break;
}
}
}
void bc_Input::bm_init(sf::RenderWindow app)
{
App = app;
in = App.GetInput();
}
int bc_Input::bm_MouseX()
{
return in.GetMouseX();
}
int bc_Input::bm_MouseY()
{
return in.GetMouseY();
}
我得到這些錯誤來自這樣的:
C:\ C++ \ SDL \牛鞭\ LIB \牛鞭\ /Input.h: 15:error:'bc_Input :: App'不能出現在一個常量表達式中 C:\ C++ \ sdl \ bullwhip \ lib \ Bullwhip \ /Input.h:15:error:'。'不能出現在常量表達式中 C:\ C++ \ sdl \ bullwhip \ lib \ Bullwhip \ /Input.h:15:錯誤:函數調用不能出現在常量表達式中 C:\ C++ \ sdl \ bullwhip \ lib \ Bullwhip \ /Input.h:15:錯誤:ISO C++禁止初始化成員'input' C:\ C++ \ sdl \ bullwhip \ lib \ Bullwhip \ /Input.h:15:error:使'input'爲static C:\ C++ \ SDL \牛鞭\ lib中\牛鞭\ /Input.h:15:錯誤:無效的一流的初始化非整體型的靜態數據成員 'SF ::輸入&'
使用c: \ program files(x86)\ codeblocks \ mingw \ bin ../ lib/gcc/mingw32/4.4.0 /../../../../ include/SFML/System/NonCopyable.hpp:57:error :'sf :: NonCopyable :: NonCopyable(const sf :: NonCopyable &)'是私人的 c:\ program files(x86)\ codeblocks \ mingw \ bin ../ lib/gcc/mingw32/4.4.0 /../../../../ include/SFML/Window/Window.hpp: 56:錯誤:在這一範圍內