【发布时间】:2016-11-10 19:05:44
【问题描述】:
我目前正在使用 OpenGL 实现一些代码,并且我已经为各种 OpenGL 类创建了包装器。特别是,我有一个缓冲区类,它可以表示顶点数组缓冲区或元素数组缓冲区。为此,我在标题中声明了我的类,如下所示:
Buffer.h
namespace FE { namespace GL {
enum BufferType {
ARRAY = GL_ARRAY_BUFFER,
ELEMENT = GL_ELEMENT_ARRAY_BUFFER
};
class Buffer {
public:
Buffer(BufferType type);
... rest of class ...
};
}
在我的 Renderer 类中,我尝试将一些缓冲区实例化为类成员:
Renderer.h
...
#include "../GL/Buffer.h"
namespace FE { namespace Render {
class Renderer {
...
private:
GL::Buffer vbo(GL::BufferType::ARRAY);
GL::Buffer element(GL::BufferType::ELEMENT);
};
}}
出于某种原因,尝试以这种方式使用枚举会给我错误“语法错误:标识符 'ELEMENT'”。 Intellisense 还警告说“常量 'FE::GL::ELEMENT' 不是类型名称。”
我不太清楚为什么这不起作用,就像以前在测试我的缓冲区相关代码时一样,我以类似的方式创建了缓冲区(通过使用范围运算符访问枚举值)。
我们将不胜感激有关如何解决此问题的任何帮助。
【问题讨论】:
-
您是要初始化
vbo和element数据成员,还是要创建vbo和element成员函数? -
我正在尝试创建数据成员,而不是成员函数。
-
哦,我明白你的意思了。我现在将其更改为:
GL::Buffer vbo = GL::Buffer(GL::ARRAY);非常感谢!
标签: c++ c++11 compiler-errors c++14