使用C库的面向对象应用程序的方法
Approaches for an Object Orientated Application using C Libraries
My Application是一个使用OpenGL在C++中编写的图形应用程序。我需要使用一些库,如GLFW、GLEW和GLM 但是你不需要了解这些库或OpenGL就可以回答这个问题我因此多次遇到麻烦。例如,目前我必须传递一个函数,特别是对于窗口的调整大小事件,作为GLEW的参数。它需要一个静态函数,因为C中没有类。它揭示了我不能修改这个函数中的任何类成员的问题。(我无法处理它来提供一个指向该类的全局指针…) 由于我想保持面向对象的状态,我最近不得不多次重组我的代码。我现在很难过。 那么,对于使用没有面向对象支持的库来处理此类面向对象项目,有什么方法或指导方针吗
很多时候,C库允许您传入上下文指针/引用常量,通常类型为void *
或const void *
。然后将此参数传递给您的回调。这是为了让您将状态线程传递到回调。您可以使用它来传递要使用的对象。
我已经看到这是通过声明一个静态成员函数来完成的,将其作为回调的目标,然后从中跳到一个适当的成员函数,类似于:
/*static*/ int Class::_callback(void *ctx, int callback_arg) {
Class *me = (Class *)ctx;
return me->callback(callback_arg);
}
int Class::callback(int callback_arg) {
return this->fCount;
}
相关文章:
- 将FFMpeg AVFrame对象从C++应用程序流式传输到Python的最佳方法?
- 初始化和终止Qt应用程序的正确方法?
- 这是使用Docker开发多层C/C 应用程序的好方法
- 是否有一种简单的方法可以从普通的 win32 C++代码向应用程序见解提供数据?
- VS2013在构建容器应用程序时无法识别OCX控制的附加方法
- 有没有停止应用程序的睡眠的方法?(异步睡眠)(C )
- 该代码注入第三方Qt应用程序并执行一些方法来获取Qt应用程序信息
- 是否有一种跨平台的方法可以在使用 C++ 编写的二进制应用程序中嵌入资源?
- 使用C 的多线程应用程序中测量全局时间(壁挂)的最快方法
- 将大量数据从C 应用程序传递到SQLServer存储过程的最快方法是什么?
- 拥有用于QT应用程序的Web用户界面的最佳方法
- 有没有一种方法可以测量桌面应用程序 UI 响应时间
- 生成代码以与不需要重新编译的正在运行的 cpp 应用程序交互的好方法是什么?
- 在 UWP 应用程序中,future.wait() 在尝试同步来自异步方法的响应时继续等待
- 当从一个应用程序调用时,在DLL方法中创建COM接口指针是有效的,但当从另一个应用软件调用时则无效
- 如何在不冻结线程/应用程序的情况下减慢方法执行速度
- 测试使用visual studio编写的C++android应用程序的最佳方法是什么.不升级到windows专业版
- C++在32位应用程序之间传输大量数据以进行视频播放的方法
- 在MFC C++应用程序中在屏幕上绘制点的最快方法
- 从QML(Qt Quick应用程序)调用C++方法