【求肋】有个问题希望大家能帮忙解答一下
工程中有这样两个类,但老编译不过,类和错误码代码如下:class Keys
{
public:
/** 构造函数 */
Keys() { Clear(); }
/** 清空所有的按键信息 */
void Clear() { ZeroMemory(&m_KeyDown, sizeof(m_KeyDown)); }
/** 判断某个键是否按下 */
bool IsPressed(unsigned int key) { return (key < MAX_KEYS) ? (m_KeyDown[key] == true) : false; }
/** 设置某个键被按下 */
void SetPressed(unsigned int key) { if (key < MAX_KEYS) m_KeyDown[key] = true; }
/** 设置某个键被释放 */
void SetReleased(unsigned int key) { if (key < MAX_KEYS) m_KeyDown[key] = false; }
private:
static const unsigned int MAX_KEYS=255;
bool m_KeyDown[MAX_KEYS]; /**< 保存256个按键的状态 */
};
class GLApplication
{
public:
/** 创建一个全局的Create函数,这个函数必须被继承类实现 */
static GLApplication * Create(const char * class_name); /**< 创建你自己的子类 */
/** 虚析构函数 */
virtual ~GLApplication() {};
protected:
/** 下面的函数必须被继承类实现,完成基本的OpenGL渲染过程 */
virtual bool Init() = 0; /**< OpenGL的初始化 */
virtual void Uninit() = 0; /**< OpenGL的卸载 */
virtual void Update(DWORD milliseconds) = 0; /**< 执行OpenGL程序的更新 */
virtual void Draw() = 0; /**< 绘制OpenGL场景 */
/** 通用的函数 */
void ToggleFullscreen(); /**< 切换 全屏/窗口模式 */
void TerminateApplication(); /**< 结束程序 */
void ResizeDraw(bool enable) { m_ResizeDraw = enable; } /**< 设置在窗口改变大小的时候,可以绘制 */
Keys m_Keys; /**< 按键类 */
/** 构造函数 */
GLApplication(const char * class_name);
private:
/** 程序的主循环 */
friend int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);
int Main(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);
/** 消息处理回调函数 */
friend LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
LRESULT Message(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
static const UINT WM_TOGGLEFULLSCREEN = (WM_USER + 1); /**< 自定义消息,在切换窗口模式的时候发送 */
GLWindow m_Window; /**< Window类 */
const char* m_ClassName; /**< 程序名 */
bool m_IsProgramLooping; /**< 程序循环标记,如果为false,则退出程序 */
bool m_CreateFullScreen; /**< 若为true,则创建全屏模式 */
bool m_IsVisible; /**< 窗口是否可见 */
bool m_ResizeDraw; /**< 是否在改变大小时,调用了绘制函数 */
DWORD m_LastTickCount; /**< 上一次计时器的值 */
};
d:\av\msdev98\myprojects\opengl002\glframe.h(55) : error C2258: illegal pure syntax, must be '= 0'
d:\av\msdev98\myprojects\opengl002\glframe.h(55) : error C2252: 'MAX_KEYS' : pure specifier can only be specified for functions
d:\av\msdev98\myprojects\opengl002\glframe.h(56) : error C2065: 'MAX_KEYS' : undeclared identifier
d:\av\msdev98\myprojects\opengl002\glframe.h(56) : error C2057: expected constant expression
d:\av\msdev98\myprojects\opengl002\glframe.h(56) : warning C4200: nonstandard extension used : zero-sized array in struct/union
d:\av\msdev98\myprojects\opengl002\glframe.h(94) : error C2258: illegal pure syntax, must be '= 0'
d:\av\msdev98\myprojects\opengl002\glframe.h(94) : error C2252: 'WM_TOGGLEFULLSCREEN' : pure specifier can only be specified for functions
d:\av\msdev98\myprojects\opengl002\glframe.h(96) : error C2229: class 'GLApplication' has an illegal zero-sized array
d:\av\msdev98\myprojects\opengl002\glframe.cpp(100) : error C2065: 'WM_TOGGLEFULLSCREEN' : undeclared identifier
d:\av\msdev98\myprojects\opengl002\glframe.cpp(189) : error C2051: case expression not constant
Error executing cl.exe.