[英]“list iterator not dereferencable” on creation of object
我正在Visual Studio中使用C ++和QT創建計算機圖形項目。
我收到此錯誤的行是
quad *bodyQuad = &quad(bodyTri1, bodyTri2);
在以下方法中:
void MyGLWidget::createCharacter1(tree *t, node *root) {
triangle bodyTri1 = triangle(vec3(4, 0, 0), vec3(-1, 1, 0));
triangle bodyTri2 = triangle(vec3(-6, 0, 0), vec3(-1, -1, 0));
bodyTri2 = *bodyTri2.applyTransform(mat3::translation2D(5, 1));
quad *bodyQuad = &quad(bodyTri1, bodyTri2);
root = new node(bodyQuad, 2);
}
triangle
和quad
都從虛擬shape
類派生。 shape
類中有一個std::list
,用於存儲頂點。
node
還有一個std::list
用於存儲其子node
。
在triangle
和quad
的構造函數中,將頂點添加到列表中
triangle::triangle(const vec3& vector1, const vec3& vector2) {
numTriangles = 1;
isOneColor = true;
vec3 origin = vec3(0, 0, 1);// '1' to signify a point
data = mat3(vector1, vector2, origin);
data = data.transpose();
//push "origin" vertex
vertices.push_back(data[2]);
//make sure point/vector convention followed, and push "base" vertex
vertices.push_back(data[0] + vec3(0, 0, 1));
//make sure point/vector convention followed, and push "height" vertex
vertices.push_back(data[1] + vec3(0, 0, 1));
}
quad::quad(triangle triangle1, triangle triangle2) {
numTriangles = 2;
isOneColor = true;
data[0] = triangle1;
data[1] = triangle2;
std::list<vec3> tri1Vertices = data[0].getVertices();
std::list<vec3> tri2Vertices = data[1].getVertices();
for (size_t i = 0; i < tri1Vertices.size(); i++) {
vertices.push_back(tri1Vertices.front());
tri1Vertices.pop_front();
}
for (size_t i = 0; i < tri2Vertices.size(); i++) {
vertices.push_back(tri2Vertices.front());
tri2Vertices.pop_front();
}
}
我的問題是我的applyTransform()
返回一個shape
指針,但是在我的return語句中,我只是取消引用&
一個applyTransform()
中使用的臨時變量,而不是使用new
關鍵字。
謝謝所有幫助的人。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.