Nutzen von Werten



  • Hallo,
    ich möchte gerne den Wert einer Variablen, nennen wir sie x, zu einem früheren Zeitpunkt nutzen als sie deklariert wurde.

    Also als Beispiel habe ich:

    int x;
    //irgendwas anderes
    int y = x*2;
    //noch etwas anderes
    x = 5;
    

    Also der Wert, der x zugewiesen wird, soll einige Zeilen vorher bekannt sein.
    Gibt es da einen Trick wie man das machen kann, oder ist der Gedanke selbst purer Blödsinn?

    Danke schonmal im Voraus.



  • Hallo,

    zur Terminologie: 'deklarieren' ist das, was du in der erste Zeile machst.
    Wie stellst du dir das denn vor?

    int x;
    //irgendwas anderes
    int y = x*2;
    cout << y;  Was soll da passieren?
    x = 5;
    //irgendwas anderes
    x=99;
    

  • Mod

    Letzteres. Wenn der Wert vorher bekannt ist, warum weist du ihn nicht x auch frueher zu (bzw. Initialisierst x damit)? Klingt nach XY.



  • Das war jetzt nur ein kurzes Beispiel.

    Es geht darum, dass x das Ergebnis einer Funktion zugeordnet wird.
    Den Wert erhalte ich allerdings erst zu einem späteren Zeitpunkt als ich ihn für die Weiterverarbeitung benötige.

    Danke für die Berichtigung, ich meinte natürlich initialisieren.



  • Zydar schrieb:

    Den Wert erhalte ich allerdings erst zu einem späteren Zeitpunkt als ich ihn für die Weiterverarbeitung benötige.

    Also ähnlich wie beim Lotto, wo ich die Zahlen vom Abend eigentlich schon am Nachmittag benötige?
    Tricky... 🙂



  • Also ähnlich wie beim Lotto, wo ich die Zahlen vom Abend eigentlich schon am Nachmittag benötige?
    Tricky... 🙂

    Guter Vergleich 😃



  • Es ist etwas unklar welches konkrete Problem du hier lösen möchtest. Falls du y eine "Formel" zuweisen möchtest, durch die der Wert von y bestimmt wird, auch wenn sich das x zu einem späteren Zeitpunkt ändert, kann man das vielleicht elegant und ohne viel zusätzlichen Code mit einer Lambda-Funktion lösen.

    int x;
        auto y = [&]{ return x * 2; };
        x = 5;
        std::cout << y() << std::endl;
        x = 3;
        std::cout << y() << std::endl;
    

    Ausgabe:

    `

    10

    6

    `

    Allerdings hast du auch hier das Problem, dass du nicht "in die Zukunft" schauen kannst. y() liefert dir erst dann ein sinnvolles Ergebnis, nachdem x zugewiesen wurde. Falls dir das jedoch wider Erwarten dennoch gelingen sollte, wären hier sicher einige Leute dankbar, wenn du bei der Gelegenheit die Lottozahlen von nächster Woche hier posten würdest 😉

    Finnegan



  • Vielleicht suchst Du std::future



  • Es geht um ein Problem in Bezug aufs Scripting mit Lua, das wollte ich aber nicht hier so erwähnen, da das hier ja das C++ Forum ist 😉

    Falls es jemanden aber doch interessiert versuche ich mal es etwas genauer zu beschreiben.

    Also ich habe ein .cpp-file und ein .lua-file, welche ihre Ergebnisse aus ihren Funktionen immer dem anderen mitteilen.
    Funktionen und Variablen, die von C++ an Lua gereicht werden, müssen vor Öffnen des .lua-files bekannt gemacht werden.
    Wohingegen Funktionen und Variablen, die von Lua an C++ gereicht werden, erst nach dem Öffnen des .lua-Files bekannt gemacht werden.

    Ich habe nun eine C++-Variable, die ich an Lua weitergeben möchte, deren Wert aber dem Ergebnis einer Funktion in Lua entspricht.

    Naja ich erwarte gar nicht, dass sich hier jemand mit der Interaktion zwischen C++ und Lua auskennt, da ich ja weiß in welchem Forum ich bin 🙂

    Trotzdem danke an alle die sich die Zeit genommen haben über mein Problem nachzudenken.

    Ich werde das wohl vergessen müssen 🙄



  • Es wird hier sicherlich einige geben, die sich auch mit Lua auskennen und auch mit der Kommunikation zwischen Lua und C++.

    Aber was du da vorhast, hört sich ganz stark nach einem Designfehler an.

    Und das Problem kann man exakt formulieren: Man kann den Wert einer Berechnung nicht vor der Berechnung selbst kennen. Und demnach auch keiner Variable zuweisen.

    Und bei deinem letzten Post hast du auch nicht ein konkretes Beispiel (was eventuell nicht klappt) gepostet, sondern nur eine abstrakte Beschreibung.

    Brich dein Vorhaben auf etwas minimales runter (Proof of Concept) und das kannst du uns zeigen. Weil dann können wir auch helfen oder was machen.


Log in to reply