简体   繁体   中英

C++ PugiXML Vector Iterators Incompatible Error

I have an application where I parse XML code into sprites with textures using PugiXML. However, I'm experiencing problems getting this one for loop working, as the compiler keeps returning the Expression: vector iterators incompatible run-time error during the loop, right when initCollisionObject is initiated. Any help would be greatly appreciated!

for Loop:

for (xml_node collisions = doc.child("level").child("collisions").child("object"); collisions; collisions = collisions.next_sibling("object"))
{
    xml_attribute textureAttribute = collisions.attribute("spritesheet");
    xml_attribute xPosAttribute = collisions.attribute("x");
    xml_attribute yPosAttribute = collisions.attribute("y");
    xml_attribute rotationAttribute = collisions.attribute("rotation");

    std::string texture = textureAttribute.as_string();
    int xPos = xPosAttribute.as_int();
    int yPos = yPosAttribute.as_int();
    int rotation = rotationAttribute.as_int();

    collisionArray.push_back(collisionObject);
    collisionArray[currentCollisionObjectIndex].initCollisionObject(texture, _world, xPos, yPos, rotation);

    currentCollisionObjectIndex++;
}

initCollisionObject Function:

void CollisionObject::initCollisionObject(std::string fileName, b2World &_world, float objectX, float objectY, float objectRotation)
{
    collisionObjectSpriteImage.loadFromFile(fileName);
    //spriteImage.createMaskFromColor(sf::Color::White);
    collisionObjectSpriteTexture.loadFromImage(collisionObjectSpriteImage);
    collisionObjectSprite.setTexture(collisionObjectSpriteTexture);
    width = collisionObjectSprite.getGlobalBounds().width;
    height = collisionObjectSprite.getGlobalBounds().height;
    x = objectX;
    y = objectY;
    rotation = objectRotation;
    collisionObjectSprite.setOrigin(collisionObjectSprite.getGlobalBounds().width / 2, collisionObjectSprite.getGlobalBounds().height / 2);
    collisionObjectSprite.setPosition(x, y);
    collisionObjectSprite.setRotation(rotation);

    createStaticCollision(_world, x, y, width, height, rotation);

    return;
}

这听起来很荒谬,但是重新启动计算机实际上解决了问题...

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM