c++ - 错误 : vector iterators incompatible

标签 c++ opengl vector iterator

这是导致错误的行

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/

相关文章:

c++ - 如何使用按钮单击进行绘制 - C++ Windows 窗体

opengl - 简单来说,textureGrad()是什么?

matlab - 从 MATLAB 中的二进制向量 (0,1) 中选择前 n 个值

c++ - 在堆上初始化 vector 数组,C++

C++ 库包含防护

C++ Win32,编辑控件可以是所有者绘制的吗?

c++ - PC何时在if block 内分配static char*

c - OpenGL 应用程序崩溃

c++ - OpenGL - 每个三角形的像素数不正确

c++ - 如何在 Vector 中存储类指针?