[Klassen] Memberfunktion richtig deklarieren



  • Moin.

    class Nahrungsmittel
    	{
    	private:
    		string name;
    		double kalorien, joule;
    	public:
    		Nahrungsmittel ();
    		void nameSetzen();
    		void nameLesen();
    		void kalSetzen();
    		void kalLesen();
    		void jouleLesen();
    
    	};
    
    	void Nahrungsmittel::nameSetzen();
    	{
    		cout << "Bitte Nahrungsmittel-Namen eingeben";
    		cin >> name;
    	}
    

    Das ist meine Klasse für mein Programm. Doch bei Nahrungsmittel::nameSetzen(); zeigt MV C++ 2010 folgendes an:
    "Error: Die Memberfunktion ""Nahrungsmittel::nameSetzen"" darf nicht außerhalb ihrer Klasse neu deklariert werden." und dass "name" nicht definiert ist.
    Allerdings wird es genauso in meinem Buch gemacht und bei einigen Beispielen aus dem Internet auch. Habe ich irgendwo was vergessen?
    Ich habe mal probiert das }; hinter die Funktion zu schreiben, dann stimmt zwar alles mit "name", doch bekomme ich als Meldung, dass nameSetzen bereits deklariert wurde. (Ungültige Neudeklaration)



  • Don Bilbo schrieb:

    Habe ich irgendwo was vergessen?

    Nein, du hast was zuviel. Ein Semikolon.



  • MFK schrieb:

    Don Bilbo schrieb:

    Habe ich irgendwo was vergessen?

    Nein, du hast was zuviel. Ein Semikolon.

    Meinst du das nach void Nahrungsmittel::nameSetzen(void)?
    Habe es korrigiert, nun habe ich kein Problem mehr mit "name". Aber "Error: Die Memberfunktion ""Nahrungsmittel::nameSetzen"" darf nicht außerhalb ihrer Klasse neu deklariert werden." bekomme ich immernoch, außerdem wird mir dadurch das { falsch angestrichen: "Error: Es wurde ein ";" erwartet".



  • Zeig doch bitte mal ein vollständiges Minimalbeispiel, das das Problem reproduziert. Folgendes kompiliert bei mir ohne Fehler:

    #include <string>
    #include <iostream>
    using namespace std;
    
    class Nahrungsmittel 
    { 
    private: 
    	string name; 
    	double kalorien, joule; 
    public: 
    	Nahrungsmittel (); 
    	void nameSetzen(); 
    	void nameLesen(); 
    	void kalSetzen(); 
    	void kalLesen(); 
    	void jouleLesen(); 
    
    }; 
    
    void Nahrungsmittel::nameSetzen()
    { 
    	cout << "Bitte Nahrungsmittel-Namen eingeben"; 
    	cin >> name; 
    }
    


  • MFK schrieb:

    Zeig doch bitte mal ein vollständiges Minimalbeispiel, das das Problem reproduziert. Folgendes kompiliert bei mir ohne Fehler:

    #include <string>
    #include <iostream>
    using namespace std;
    
    class Nahrungsmittel 
    { 
    private: 
    	string name; 
    	double kalorien, joule; 
    public: 
    	Nahrungsmittel (); 
    	void nameSetzen(); 
    	void nameLesen(); 
    	void kalSetzen(); 
    	void kalLesen(); 
    	void jouleLesen(); 
    
    }; 
    
    void Nahrungsmittel::nameSetzen()
    { 
    	cout << "Bitte Nahrungsmittel-Namen eingeben"; 
    	cin >> name; 
    }
    

    Ich Trottel hatte class ausversehen in main geschrieben. 🙄
    Dein Code hat mich erst drauf gebracht, vielen Dank!


Anmelden zum Antworten