Anfängerfrage bezüglich Zeigern (Erhalte Fehlermeldung, kurzes Programm)



  • Hallo! Ich habe nach Jahren wieder mein Buch "C++ für Spieleprogrammierer" ausgepackt und bin momentan bei dem Kapitel Pointern.
    Daraus hab ich folgendes Programm abgeschrieben:

    #include <iostream>
    
    using namespace std;
    
    //Struktueren
    struct S_Spieler
    {
    	char Name[30];
    };
    
    //Prototypen
    NameAbfragen (S_Spieler *pSpieler);
    
    int main()
    {
    	int Ende;
    	S_Spieler Spieler1;
    
    	//Spieler initialisieren
    	Spieler1.Name[0] = '\0';
    
    	//Name des Spielers abfragen
    	NameAbfragen(&Spieler1);
    	cout << "Neuer Spieler: " << Spieler1.Name << endl;
    
    	cin >> Ende;
    	return 0;
    
    }
    
    //Aufgabe: Namen des Spielers abfragen
    NameAbfragen (S_Spieler *pSpieler)
    {
    	cout << "Name des Spielers: ";
    	cin.get (pSpieler->Name, 29);
    }
    

    So weit so gut...Ich hab jetzt 5 mal mein Programm mit dem aus dem Buch verglichen und finde den Fehler nicht.

    Folgende Fehlermeldungen erhalte ich:

    1>c:\users\sacume\documents\visual studio 2010\projects\zahlenrate\zahlenrate\programm.cpp(17): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.

    1>c:\users\sacume\documents\visual studio 2010\projects\zahlenrate\zahlenrate\programm.cpp(43): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.

    1>c:\users\sacume\documents\visual studio 2010\projects\zahlenrate\zahlenrate\programm.cpp(46): warning C4508: 'NameAbfragen': Funktion sollte einen Wert zurückgeben; Ergebnistyp 'void' angenommen

    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========

    ------------------------------------------------------------------------------

    Ich habe jetzt eine Stunde selbstständig herumprobiert und herausgefunden, woran es lag.

    Ich habe bei dem Prototypen, sowie der Funktion an sich ein "void" vorangestellt. Das hat den Fehler behoben.

    Ich frage mich jetzt nur, warum? Ich meine, in meinem Buch steht ja auch kein "void" dabei. 😕
    Mein Kopf raucht und ich hoffe, mir kann jemand ein bisschen die Vewirrung nehmen!
    Vielen Dank! 🙂



  • Du hast keinen Rückgabewert angegeben:

    void NameAbfragen (S_Spieler *pSpieler)
    


  • Sacume schrieb:

    Ich frage mich jetzt nur, warum? Ich meine, in meinem Buch steht ja auch kein "void" dabei.

    Buch => Altpapiertonne

    Für mehr ist es nicht zu gebrauchen.



  • Funktionen müssen in C++ immer einen Rückgabetyp haben. In dem Fall ist "void" auch ein Typ. Wenn das in deinem Buch anders steht, taugt das Buch nichts.



  • Oh, vielleicht sollte ich die Posts auch ganz lesen...



  • In alten C Varianten oder Implementierungen war es wohl mal üblich das der return type int war, falls kein anderer angegeben wird. Korrektes C++ war das aber nie.



  • TNA schrieb:

    In alten C Varianten oder Implementierungen war es wohl mal üblich das der return type int war, falls kein anderer angegeben wird.

    Dann fehlt aber immer noch das retun.



  • Keiner hat was zu den C-Strings gesagt, das Forum ist langsam abgehärtet 😃



  • cvcv schrieb:

    Keiner hat was zu den C-Strings gesagt, das Forum ist langsam abgehärtet 😃

    ->

    manni66 schrieb:

    Buch => Altpapiertonne

    Für mehr ist es nicht zu gebrauchen.



  • Schon klar, dass er das nicht tun wird aber auch.


Anmelden zum Antworten