【发布时间】:2013-12-28 13:08:08
【问题描述】:
这是一道 C++ 问题。
我正在开发一个 OpenGL 项目。写了一个简单的 OBJ 加载器。我有一个名为Mesh的课程。通过获取一个名为monkey的对象指针
Mesh* monkey;
和调用函数:
load_obj("Monkey.obj", monkey);
我想从文件中读取并将其放在猴子顶点中。 但是在运行时它给了我未处理的异常:当想要回推到向量时读取冲突:
mesh->vertices.push_back(v);
我测试了一个本地向量假人,但它成功推回。不知道为什么不能推送到对象指针向量?
这里是网格标题
include[...]
using namespace std;
class Mesh {
private:
GLuint vbo_vertices, vbo_normals, ibo_elements;
public:
vector <glm::vec4> vertices;
vector <glm::vec3> normals;
vector <GLushort> elements;
glm::mat4 object2world;
Mesh() : vertices(1), normals(1), elements(3), object2world(glm::mat4(1)) {}
~Mesh(void){} ;
void Mesh::draw(void) ;
};
这是 obj-loader.cpp 的相关部分
void load_obj(const char* filename, Mesh* mesh) {
ifstream in(filename, ios::in);
if (!in) { cerr << "Cannot open " << filename << endl; exit(1); }
vector<int> nb_seen;
vector<glm::vec4> dummy;
string line;
while (getline(in, line)) {
if (line.substr(0,2) == "v ") {
istringstream s(line.substr(2));
glm::vec4 v; s >> v.x; s >> v.y; s >> v.z; v.w = 1.0;
dummy.push_back(v);
mesh->vertices.push_back(v);
}
任何帮助将不胜感激! 你困惑的朋友!
【问题讨论】:
标签: c++ class pointers vector unhandled-exception