Frage von julib5432112345, 57

C++ - Variable in Loop ändern?

Hallo. Ich versuche seit einigen Stunden in C++ eine Variable (definiert in einer Funktion) in einer untergeordneten Schlaufe zu ändern. Bsp: Ich definiere Integer a mit dem Wert 0 und möchte ihn in einer for-Schleife erhöhen. Bei Verlassen der Schleife wird der Wert jedoch zurückgesetzt. Das Deklarieren einer globalen Variable hinterlässt ein "undefined reference" beim Kompilieren zurück. Das Definieren einer solchen Variable klappt gar nicht. Bin mit meinem binären Latein am Ende und hoffe auf Hilfe. Danke, Julian

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von J0T4T4, 39

Ich weiß nicht genau, warum das nicht funktioniert, aber ich weiß, dass das sehr schlechter Stil ist, und auch anders gelöst werden könnte.

Generell sind globale Variablen nicht das Mittel der Wahl, aber dann sollten nicht auch noch irgendwelche Funktionen darauf zugreifen. Aus Prinzip sollten Funktionen nur lokale Variablen bearbeiten. Wie kannst Du jetzt aber dec als lokale variable haben?

Erweitere die Parameter um int dec, und übergib der Funktion dec. Dann rechnest du in deiner Funktion mit einer lokalen Kopie von dec.

Am Ende verwendest Du dann return dec; um die bearbeitete Variable zurückzugeben.

Alternativ kannst Du auch mit int& dec eine Referenz auf dec übergeben lassen, wodurch du nicht eine lokale Kopie, sondern das Original verwendest, und dieses dann auch in der Funktion direkt verändern kannst.

Kommentar von julib5432112345 ,

Das original lässt sich so einfach Ändern... -_- Danke!

Antwort
von PWolff, 41

Kannst du bitte mal den Quelltext der Variablendeklaration/-definitun und der Schleife posten?

Bitte entweder hier als Code formatiert oder über pastebin o. ä.

Kommentar von julib5432112345 ,
Kommentar von PWolff ,

Sorry, meine C++-Kenntnisse sind sehr begrenzt. Ich kenne mich eher mit C# aus.

Es fehlt ein return-Statement in der Funktion. Nimm als letzte Zeile von GetDecFromBin:

return dec;
Kommentar von J0T4T4 ,

Da Du extern verwendest, wäre eine Übersicht über die anderen Dateien hilfreich. Wo und wie wird dec global deklariert?

Kommentar von julib5432112345 ,

Nirgendwo. Nur in der Funktion. Seltsamerweise löste sich das Problem als ich die Variable bei #include <blabla.h> deklarierte und erst in der Funktion definierte. Wenn ich die Funktion aufgerufen hätte würde die Variable ja mehrfach deklariert werden -> Error.

Kommentar von PWolff ,

Bei meinem Versuch, den Code in Visual Studio ans Laufen zu kriegen, habe ich bei dec auch eine Namenskollision bekommen - offensichtlich gibt es in einer der benötigten Header-Dateien ein Element gleichen Namens. Nach Umbenennen von dec war wenigstens dieser Fehler weg.

Keine passende Antwort gefunden?

Fragen Sie die Community