C++ C++;奇怪的函数指针行为
这是一个简单的opengl/sdl程序。通常有一个巨大的队列,程序在其中保存显示数据,例如一个三角形将像这样插入/读取队列中(GL_Begin…Vertice 1…Vertice 2…Vertice 3…GL_End) 项结构C++ C++;奇怪的函数指针行为,c++,opengl,pointers,sdl,C++,Opengl,Pointers,Sdl,这是一个简单的opengl/sdl程序。通常有一个巨大的队列,程序在其中保存显示数据,例如一个三角形将像这样插入/读取队列中(GL_Begin…Vertice 1…Vertice 2…Vertice 3…GL_End) 项结构 enum Shapes{ LINE, POLYGON, TRIANGLE }; struct Item{ int id; int type; Shapes shape; double x; double y
enum Shapes{
LINE,
POLYGON,
TRIANGLE
};
struct Item{
int id;
int type;
Shapes shape;
double x;
double y;
double z;
};
^很好用
但是
与
不
为了进一步简化事情:
Case SDL_MOUSEMOTION: ...... code ..... CC2D( params) ........
很好,但是
Event(){ CC2D( params ) } // Main.cpp
Case SDL_MOUSEMOTION: ...... code ..... (*Event)() ........ // GEngine.cpp
无法按预期工作您正在
PollEvents
中声明局部变量:
int mouse_xpre = 0;
int mouse_ypre = 0;
请注意,它们被命名为mouse\u xpre
和mouse\u ypre
。然后在回调中,您正在执行
gEngine.CC2D(0,(gEngine.mouse_x-gEngine.mouse_xpre),(gEngine.mouse_y-gEngine.mouse_ypre));
// ^^^^^^^^^^ ^^^^^^^^^^
它访问成员变量。您需要删除局部变量的声明,以便它们不会隐藏成员变量,并且您将在这两个位置使用成员变量。您在
PollEvents
中声明局部变量:
int mouse_xpre = 0;
int mouse_ypre = 0;
请注意,它们被命名为mouse\u xpre
和mouse\u ypre
。然后在回调中,您正在执行
gEngine.CC2D(0,(gEngine.mouse_x-gEngine.mouse_xpre),(gEngine.mouse_y-gEngine.mouse_ypre));
// ^^^^^^^^^^ ^^^^^^^^^^
它访问成员变量。您需要删除局部变量的声明,以便它们不会隐藏成员变量,并且您将在这两个位置使用成员变量。…*文字墙*。。。。。。而不是用鼠标移动项目,而是将其从屏幕上移开。:)“(*事件)(;”)是什么,它只是像“…”这样的伪代码,还是语法错误?请记住,一些CCCompiler允许在不生成异常的情况下执行一些werid操作;-)是的,对不起,错过了@umlcat否,这是通过函数指针调用函数的有效语法……*文字墙*。。。。。。而不是用鼠标移动项目,而是将其从屏幕上移开。:)“(*事件)(;”)是什么,它只是像“…”这样的伪代码,还是语法错误?请记住,一些CCCompiler允许在不生成异常的情况下执行一些werid操作;-)是的,对不起,错过了@umlcat不,这是通过函数指针调用函数的有效语法。谢谢!这是不使用构造函数的代价。出于某种奇怪的原因,我决定在类中已经定义的整数之前添加一个int。谢谢!这是不使用构造函数的代价。出于某种奇怪的原因,我决定在类中已经定义的整数之前添加一个int。
int mouse_xpre = 0;
int mouse_ypre = 0;
gEngine.CC2D(0,(gEngine.mouse_x-gEngine.mouse_xpre),(gEngine.mouse_y-gEngine.mouse_ypre));
// ^^^^^^^^^^ ^^^^^^^^^^