gpt4 book ai didi

c++ - 错误 : vector iterators incompatible

转载 作者:行者123 更新时间:2023-11-28 02:30:50 29 4
gpt4 key购买 nike

这是导致错误的行

vector<transform>::iterator transformIter;
for (transformIter = (*objIter)->transforms.begin(); transformIter != (*objIter)->transforms.end(); objIter++) {
handleTransform((*transformIter));
}

无论 vector 中有多少变换,它都发生在循环的第二次迭代中。

obj 结构如下所示:

struct obj {

vector<glm::vec4> vertices;
vector<int> elements;
vector<object> objects;
vector<transform> transforms;


};

函数 handleTransform 是:

void handleTransform(transform currentTransform) {

if (currentTransform.type == 'r') {
glRotatef(currentTransform.coordinates.x, 1.0f, 0.0f, 0.0f);
glRotatef(currentTransform.coordinates.y, 0.0f, 1.0f, 0.0f);
glRotatef(currentTransform.coordinates.z, 0.0f, 0.0f, 1.0f);
}

if (currentTransform.type == 's') {
glScalef(currentTransform.coordinates.x, currentTransform.coordinates.y, currentTransform.coordinates.z);
}

if (currentTransform.type == 't') {
glTranslatef(currentTransform.coordinates.x, currentTransform.coordinates.y, currentTransform.coordinates.z);
}

}

遍历 obj 中的其他 vector 不会导致任何 vector 问题,所以我不得不想象它与 handleTransform 函数有关,但我无法弄清楚。

最佳答案

objIter++替换为++transformIter

关于c++ - 错误 : vector iterators incompatible,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29064039/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com