我有以下代码:
class RawModel{
public:
RawModel(GLuint id, GLuint count);
GLuint* getID(void);
GLuint* getVertexCount(void);
private:
GLuint *vaoID;
GLuint *verts;
};
RawModel::RawModel(GLuint id, GLuint count){
*vaoID = id;
*verts = count;
}
GLuint* RawModel::getID(void){
return vaoID;
}
GLuint* RawModel::getVertexCount(void){
return verts;
}
但是在运行时,它崩溃了。
如果我不创建此类的实例,则我的应用程序可以正常运行,但构造函数似乎崩溃了,我也不知道为什么。 (我是C++的新手)。
我需要使用指针,因为函数
glDeleteVertexArrays()
要求将Pointer作为第二个参数。 最佳答案
这个
*vaoID = 0;
没有初始化指针。相反,它是取消引用指针并尝试将零分配给指针。但是,没有pointe。取消引用不指向某物的指针是 undefined 的行为。
初始化指针将是
vaoID = nullptr;
但是请注意,此后指针仍然没有指向任何内容。您将必须创建一个对象以使指针指向该对象。
尚不清楚为什么首先要使用指针。我不知道该lib,但是很可能您可以简单地将实例作为成员:
class RawModel{
//...
private:
GLuint vaoID;
GLuint verts;
};