C++ 如何在枚举类中包装第三个库?
我正在编写一个纹理类来包装OpenGL的细节,并将其作为dll。C++ 如何在枚举类中包装第三个库?,c++,opengl,dll,enums,C++,Opengl,Dll,Enums,我正在编写一个纹理类来包装OpenGL的细节,并将其作为dll。 OpenGL中有很多常量定义,如下所示 /* TextureMinFilter */ /* GL_NEAREST */ /* GL_LINEAR */ #define GL_NEAREST_MIPMAP_NEAREST 0x2700 #define GL_LINEAR_MIPMAP_NEAREST 0x2701 #define GL_NEAREST_MIPMAP_LINEAR
OpenGL中有很多常量定义,如下所示
/* TextureMinFilter */
/* GL_NEAREST */
/* GL_LINEAR */
#define GL_NEAREST_MIPMAP_NEAREST 0x2700
#define GL_LINEAR_MIPMAP_NEAREST 0x2701
#define GL_NEAREST_MIPMAP_LINEAR 0x2702
#define GL_LINEAR_MIPMAP_LINEAR 0x2703
enum class Filter
{
Nearest = GL_NEAREST,
Linear = GL_LINEAR,
NearestMipmapNearest = GL_NEAREST_MIPMAP_NEAREST,
LinearMipmapNearest = GL_LINEAR_MIPMAP_NEAREST,
NearestMipmapLinear = GL_NEAREST_MIPMAP_LINEAR,
LinearMipmapLinear = GL_LINEAR_MIPMAP_LINEAR
};
我想用枚举类来包装它们,如下所示
/* TextureMinFilter */
/* GL_NEAREST */
/* GL_LINEAR */
#define GL_NEAREST_MIPMAP_NEAREST 0x2700
#define GL_LINEAR_MIPMAP_NEAREST 0x2701
#define GL_NEAREST_MIPMAP_LINEAR 0x2702
#define GL_LINEAR_MIPMAP_LINEAR 0x2703
enum class Filter
{
Nearest = GL_NEAREST,
Linear = GL_LINEAR,
NearestMipmapNearest = GL_NEAREST_MIPMAP_NEAREST,
LinearMipmapNearest = GL_LINEAR_MIPMAP_NEAREST,
NearestMipmapLinear = GL_NEAREST_MIPMAP_LINEAR,
LinearMipmapLinear = GL_LINEAR_MIPMAP_LINEAR
};
有一个问题,如果我把enum类放在头文件中,我需要在使用dll时包含第三个OpenGL头文件。所以我在头文件中使用enum类前向声明,并将定义放在cpp文件中
// Texture.h
enum class Filter;
但在这种情况下,当我在cpp文件外使用enum类时,编译器找不到enum类的成员
// Texture.h
enum class Filter;
如何包装它们?
extern const int filterNet代码>?(可能是在“静态”类中)。使用第三方代码总是一团糟,如果可能的话,只需使用库而不是与之斗争,否则,您可以通过将库的一部分复制到项目中来提取库,或者执行@Jarod42建议的一些变通方法。