Frage
-
-ProGresS- schrieb:
was bringt also -Wextra und -Wall
Da zeigt dir der Compiler einige zusätzliche Problemquellen an, die zwar ein Ergebnis bringen, aber nicht korrekt sind - wie in deinem Fall die fehlenden return-Anweisungen.
(die Funktion podebnike wird auch ohne gültigen Rückgabewert beendet, wenn beide if-Bedingungen fehlschlagen)
-
-ProGresS- schrieb:
jetzt aber was ich nicht ferstanden habe
wenn ich compelire mit g++ neu.cpp -o neu Zeigt der am ende :
SpeicherzugriffsfehlerNein, den Speicherzugriffsfehler macht dein Programm, nicht der Compiler. Das ist ein ganz großer Unterschied.
wenn ich g++ neu.cpp -o neu -Wall -Wextra zeigt der noch mher Feller:
neu.cpp: In function ‘std::string werten(std::string)’:
neu.cpp:33:1: warning: no return statement in function returning non-void
neu.cpp: In function ‘std::string podebnike(std::string)’:
neu.cpp:18:1: warning: control reaches end of non-void function
nick@nick-GA-790XTA-UD4:~/Arbeitsfläche/c++$Du bist gut. "Nur noch mehr Fehler". Der zeigt diese Fehler weil sie da sind! Das sind die Gründe für deinen Speicherzugriffsfehler.
-
Alles klar.
danke sehr für Ihre Hilfe.
MFG Nick
-
Lösung für das Problemm ist :
#include <iostream> #include <string> using namespace std; string podebnike(string pPodebnike) { if (pPodebnike == "Damian") { return "POlle"; } else if (pPodebnike == "Daniel") { return "Rapper"; } else { return "Keiner von beiden"; } } string werten(string pName) { string temp; if (pName == "Podebnik") { cout << "welchen Damian oder Daniel?"; cin >> temp; return podebnike(temp); } else { return "Name nicht gefunden"; } } int main() { string name; cout<< "Bitte ein Name: "; cin>> name; cout<< werten(name) << endl; return 0; }