0

私は 3D ゲームに取り組んでおり、現在は歩いていますが、一歩歩くと実行時エラーが発生します

「式: ベクトル反復子に互換性がありません」

ここで、最初にウォーキングが呼び出されます。

void Packets::handleMoving(Player* p, Stream* s)
{
    printf("handling movement for player: %s\n", p->getUsername());

    int newWalkCmdSteps = (p->packetSize - 5) / 2;

    if(newWalkCmdSteps > WALKING_QUEUE_SIZE)
    {
        printWarning("Warning: walkTo(%d) command contains too many steps (%d).\n", p->packetType, newWalkCmdSteps);
        return;
    }

    PlayerHandler::resetWalkingQueue(p);
    Pos temp;
    vector<Pos> tempPathWaypoints;

    int firstStepX = s->readSignedWordBigEndianA();

    for(int i = 0; i < newWalkCmdSteps; i++) {
        temp.x = s->readSignedByte();
        temp.y = s->readSignedByte();
        tempPathWaypoints.push_back(temp);
    }

    int firstStepY = s->readSignedWordBigEndian(); //absPos

    int isRunning = s->readSignedByteC() == 1; //seems always be 0 so useless..

    PlayerHandler::addToWalkingQueue(p, firstStepX, firstStepY);
    for(int i = 0; i < newWalkCmdSteps; i++) {
        tempPathWaypoints[i].x += firstStepX;
        tempPathWaypoints[i].y += firstStepY;
        PlayerHandler::addToWalkingQueue(p, tempPathWaypoints[i].x, tempPathWaypoints[i].y);
    }
}

ブレークポイントを使用して私が見つけたのは、一番下の forloop に問題があるように見えることです。

以下にブレークポイントを追加すると

tempPathWaypoints[i].x += firstStepX;

実行時エラーが発生しますが、それ以前のどこでも発生しません。

これが残りの歩行機能です。(このスレッドには長すぎるペーストビンに入れます)

http://pastebin.com/ZGiuL2Wf

エラーが addToWalkingQueue に基づいていることは確かですが、よくわかりません

4

0 に答える 0