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)


  • Mod

    -ProGresS- schrieb:

    jetzt aber was ich nicht ferstanden habe
    wenn ich compelire mit g++ neu.cpp -o neu Zeigt der am ende :
    Speicherzugriffsfehler

    Nein, 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;
    }
    

Anmelden zum Antworten