【发布时间】:2011-04-20 11:21:04
【问题描述】:
所以我将我的游戏引擎从 SDL 移植到 SFML,但现在我的输入系统出现了问题。 输入.h
#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
输入.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\bullwhip\lib\Bullwhip\/Input.h:15: 错误:'bc_Input::App' 不能出现在常量表达式中 C:\c++\sdl\bullwhip\lib\Bullwhip\/Input.h:15: 错误:'.'不能出现在常量表达式中 C:\c++\sdl\bullwhip\lib\Bullwhip\/Input.h:15:错误:函数调用不能出现在常量表达式中 C:\c++\sdl\bullwhip\lib\Bullwhip\/Input.h:15:错误:ISO C++ 禁止初始化成员“输入” C:\c++\sdl\bullwhip\lib\Bullwhip\/Input.h:15: 错误:将“输入”设为静态 C:\c++\sdl\bullwhip\lib\Bullwhip\/Input.h:15:错误:非整数类型'sf::Input&'的静态数据成员的类内初始化无效
c:\program files (x86)\codeblocks\mingw\bin../lib/gcc/mingw32/4.4.0/../../../../include/SFML/System/NonCopyable。 hpp:57: 错误: '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 : 错误:在这种情况下
【问题讨论】:
标签: input reference constants sfml noncopyable