[C++] Struct aktualisiert sich nur nach cout

  • Moin.
    Ich stehe wiedereinmal vor einem abstrakten Rätsel.
    Ich habe ein eigenes Struct.

    Code
    struct tPosition
    		{
    			short Color;
    			short X;
    			short Y;
    		};

    In einer anderen Funktion benutze ich nun dieses Struct um einen Wert zu berechnen.

    Das funktioniert auch soweit, aber nur, solange die Zeile nach // DAS IST DIE BOESE ZEILE im Code vorhanden ist.
    Wenn ich den cout Befehl rausnehme, ist die Überprüfung immer false.

    Der Fehler ist für mich völlig unverständlich ...
    Hat da Jemand eine Idee, ob es auch ohne die cout Zeile geht?

  • Bin jetzt kein Held c++ Held, aber wird hier

    Code
    Position = this->GetNextStoneInDirection(Move.First, i);

    ein ungültiger Wert für Position vergeben?

    Vielleicht zeigst du mal die Funktion?

    Gruß,
    Jojo



  • Daran kann es aber eigentlich nicht liegen, da das Problem nur besteht, wenn man kein cout benutzt.

    Edit: Habs hinbekommen, GetNextStoneInDirection brauchte noch einen & davor, fragt mich aber bitte nicht warum.
    Falls jemand das eklären kann, würde ich es gerne wissen.

  • du meinst tposition& cField::GetNextStoneInDirection ?
    Dadurch verweist die Rückgabe auf den in der Funktion ausgewählten Stein, sie ist keine Kopie.
    Dann nehme ich an, dass der Zuweisungsoperator operator= vom Compiler für tPosition falsch automatisch definiert wurde.
    Wenn du es ohne & haben möchtest, probier mal in der Klasse tPosition den operator= neu zu definieren, daran könnte es liegen.
    Einfach:

    Code
    tPosition& tPosition::operator=(tPosition arg)
    {
    Color = arg.Color;
    X = arg.X;
    Y = arg.Y;
    return *this;
    }


    Nicht sicher, dass es daran liegt.

    Viele liebe Grüße
    The User