C++ - Variable in Loop ändern?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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.

julib5432112345 
Fragesteller
 19.02.2016, 13:48

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

0

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

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

Woher ich das weiß:Berufserfahrung – Software-Entwickler
julib5432112345 
Fragesteller
 18.02.2016, 21:47
0
PWolff  18.02.2016, 23:57
@julib5432112345

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;
0
J0T4T4  19.02.2016, 09:21
@julib5432112345

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

0
julib5432112345 
Fragesteller
 19.02.2016, 13:48
@J0T4T4

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.

0
PWolff  19.02.2016, 14:44
@julib5432112345

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.

0