如何声明一个名称已在外部库中定义的类?

时间:2017-11-03 09:42:02

标签: c++ opengl glx

我正在使用OpenGL在多平台项目中工作,并且我需要查询当前上下文。 在Windows中,我使用了 wglGetCurrentContext(),包括 windows.h ,工作正常。

另一方面,当尝试在linux中编译时,我使用 glXGetCurrentContext()并包括 glx.h ,内部包含 Xlib。 h Xh

在我的源代码中,我有一个名为 Status 的类,但在Xlib中有一个名为相同的宏,即 #define Status int ,啊哈!因为我到处都在使用我的班级,所以现在很大的问题。

解决这个问题的最佳方法是什么?我现在想到的想法是

  1. 将我的课程重命名为其他...但为什么?
  2. 使用#pragma push_macro("Status")后跟#undef Status
  3. 找到一种更健壮,更便携的方式来查询OpenGL的上下文
  4. 如果您有任何其他建议让我知道,我非常了解它。

2 个答案:

答案 0 :(得分:3)

至少,您可以将glXGetCurrentContext()与其自己的翻译单元隔离开来:

myGlXGetCurrentContext.hpp

GLUint myGlXGetCurrentContext();

myGlXGetCurrentContext.cpp

#include<glx.h>
GLUint myGlXGetCurrentContext(){ return glXGetCurrentContext(); }

whatever.hpp

#include<myGlXGetCurrentContext.hpp>
...

答案 1 :(得分:-3)