Fehlermeldung: Dieses Projekt ist veraltet: ...



  • Hallo Leute!

    Ich bin ein ziemlicher Neuling in Sachen C++ und deshalb fällt mir die Fehlerbehebung bei meinen Programmen häufig sehr schwer.
    Bisher hab ich es immer hinbekommen, aber mein aktuelles Projekt funzt einfach nicht und ich kann keinen Fehler finden.
    (Ich benutze Microsoft Visual C++ 2008 Express Version)
    Ich stelle mal den Quelltext rein, vielleicht ist es ja was ganz banales was falsch ist:

    #include <isotream>
    using namespace std;
    
    float berechnePunktewert(float F,float S,float R,float A,float L,float Gk,float Sg,float WSr)
    {
    	if(L>1)
    	{
    		if(F>0)
    		{
    			float P=(5+((7-F)*5)+((S-6)*3)+((R-6)*3)+((A-1)*7)+((L-1)*10)+((Gk-1)*7)+(Sg*10)+WSr);
    		}
    		else
    		{
    			float P=(5+(F*5)+((S-6)*3)+((R-6)*3)+((A-1)*7)+((L-1)*10)+((Gk-1)*7)+(Sg*10)+WSr);
    		}
    	}
    	else
    	{
    		if(F>0)
    		{
    			float P=(5+((7-F)*1)+((S-6)*0.5)+((R-6)*0.5)+((Gk-1)*2)+WSr);
    		}
    		else
    		{
    			float P=(5+(F*5)+((S-6)*0.5)+((R-6)*0.5)+((Gk-1)*2)+WSr);
    		}
    	}
    	return P;
    }
    
    void main()
    {
    	float Fernkampf;
    	float Staerke;
    	float Ruestungswert;
    	float Attacken;
    	float Leben;
    	float Geisteskraft;
    	float Schlachtenglueck;
    	float WertSonderregel;
    	cout<<"Fernkampf: ";
    	cin>>Fernkampf;
    	cout<<"Staerke: ";
    	cin>>Staerke;
    	cout<<"Ruestungswert: ";
    	cin>>Ruestungswert;
    	cout<<"Attacken: ";
    	cin>>Attacken;
    	cout<<"Leben: ";
    	cin>>Leben;
    	cout<<"Geisteskraft: ";
    	cin>>Geisteskraft;
    	cout<<"Schalchtenglueck: ";
    	cin>>Schlachtenglueck;
    	cout<<"Wert der Sonderregeln: ";
    	cin>>WertSonderregel;
    	cout<<"Punktewert: "<<berechnePunktewert(Fernkampf,Staerke,Ruestungswert,Attacken,Leben,Geisteskraft,Schlachtenglueck,WertSonderregel)<<endl;
    };
    

    Zur Erklärung des Programms: Ein Freund und ich entwickeln ein Tabletop-Spiel (sozusagen ein Brettspiel), bei dem jede Einheit Attribute hat. Je besser diese Attribute sind, desto teurer ist die Einheit (Einheiten kosten Punkte). Das Programm soll den Punktewert einer Einheit nach eingabe der Attribute berechnen.

    Ich hoffe ihr findet den Fehler 🙂

    Danke schonmal im Voraus

    Glandallin



  • 1. iostream, nicht isotream

    if (...)
    {
        float P=...;
    } // P wird zerstört
    return P; // P existiert hier nicht mehr
    

    besser:

    float P = 0;
    if (...)
    {
        P = ...;
    }
    

    3. überdenke mal deinen Algorithmus... du willst ja auch in 5 Jahren noch wissen, was, und vor allem warum du es so berechnest



  • Glandallin schrieb:

    void main()
    

    void main() ist kein C++, ersetze dies mal durch int main(), wobei die main-Funktion implizit 0 zurückgibt wenn du kein return schreibst.

    cu André



  • AAAAAAAH Tippfehler 😡
    Danke für die schnelle Hilfe zwutz!!!
    Jetzt funktionierts auch 🙂

    mfG

    Glandallin

    Edit: Seh grad was asc geschrieben hat. Mit void main() klappts schon, aber wie müsste ich das mit int main() schreiben, ohne den return Befehl zu benutzen?



  • Glandallin schrieb:

    Edit: Seh grad was asc geschrieben hat. Mit void main() klappts schon, aber wie müsste ich das mit int main() schreiben, ohne den return Befehl zu benutzen?

    Es mag klappen, Standardkonform ist es aber nicht.

    Tausch einfach mal das "void main()" durch ein "int main()" aus... Bei dieser Funktion gibt es ein Sonderfall: Du musst kein return schreiben (implizites "return 0").

    cu André



  • OK ich habs auf int umgeändert. Allerdings kann ich innerhalb der Funktion das return nicht weglassen, ohne das die fehlermeldung wiederkommt.

    mfG

    Glandallin



  • Glandallin schrieb:

    OK ich habs auf int umgeändert. Allerdings kann ich innerhalb der Funktion das return nicht weglassen, ohne das die fehlermeldung wiederkommt.

    Das verwundert mich, da ich mit der gleichen IDE keinen Fehler und keine Warnung erhalte (auch nicht in der höchsten Warnstufe), wenn ich in der main-Methode kein return angebe.



  • In der main Methode ist auch kein return, sondern innerhalb der Funktion berechnePunktewert(s.o.).
    Vielleicht muss man innerhalb einer Funktion trotz int return schreiben?

    mfG

    Glandallin



  • Glandallin schrieb:

    In der main Methode ist auch kein return, sondern innerhalb der Funktion berechnePunktewert(s.o.).

    Das return hat nichts, aber auch garnichts mit der int main zu tun, und muss dort auch stehen (Jede Funktion die einen Wert [ungleich void] zurückgibt braucht man ein return, nur und ausschließlich in der int main ist dies optional).



  • Achso jetzt klickts 🙂

    mfG

    Glandallin


Anmelden zum Antworten