Я пытаюсь получить доступ к данным/печати из vector3f, что приводит к EXC_BAD_ACCESS
:Доступ к данным в векторе создает EXC_BAD_ACCESS
std::cout << myMesh.faces[1].vertices[1].pos.x;
Код:
struct Vector2f{
float x, y;
};
struct Vector3f{
float x, y, z;
};
struct ObjMeshVertex{
Vector3f pos;
Vector2f texcoord;
Vector3f normal;
};
struct ObjMeshFace{
ObjMeshVertex vertices[3];
ObjMeshFace(){}
ObjMeshFace(const ObjMeshFace& o)
{for (int i=0; i < 3; ++i) vertices[i] = o.vertices[i]; }
};
struct ObjMesh{
std::vector<ObjMeshFace> faces;
};
ObjMesh myMesh;
for(size_t i = 0; i < faces.size(); ++i){
ObjMeshFace face;
for(size_t j = 0; j < 3; ++j){
face.vertices[j].pos = positions[(faces[i].pos_index[j] - 1)];
face.vertices[j].texcoord = texcoords[faces[i].tex_index[j] - 1];
face.vertices[j].normal = normals[faces[i].nor_index[j] - 1];
}
myMesh.faces.push_back(face);
}
Отладчик относится к stl_vector.h
:
reference
operator[](size_type __n)
{ return *(this->_M_impl._M_start + __n); }
Что это значит? Я вызываю из диапазона?
вы что-то толкнули в лицо? похоже, что он по-прежнему пуст. –
@ AndersK, данные theres в лицах, im используя это для рендеринга OpenGL, и все работает так, как должно. По какой-то причине я просто не могу его получить. – JavaCake
Давайте посмотрим на весь код - лучший пример с минимальным компилятором - поскольку мы не можем видеть, как вы называете свои объекты и как они были настроены _ +, как сказано, пожалуйста, используйте теги, поскольку Xcode обычно является Objective C – Mark