Problem mit Klasse



  • Klasse wird nicht kompiliert. Benutze Visual C++ 2008:

    #include <iostream>
    
    using namespace std;
    
    class Auto {
    public:
    	int Türen;
    	sichVorstellen();
    	Auto();
    	~Auto();
    };
    
    Auto::Auto(): int Türen = 4
    {}
    
    Auto::~Auto()
    {
    	cout << "Die Klasse Auto wurde aufgehoben" << endl;
    }
    
    int Auto::sichVorstellen()
    {
    	cout << "Auto Türen:" << Türen << endl;
    	return 0;
    }
    
    int main()
    {
    	Auto ford;
    	ford.sichVorstellen();
    	cin.get();
    	return 0;
    }
    
    error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
    warning C4183: 'sichVorstellen': Rückgabetyp fehlt; Memberfunktion, die 'int' zurückgibt wird angenommen
    error C2062: 'int'-Typ unerwartet
    

    Was ist falsch?

    (Sorry, ich hab in das falsche Forum gepostet. Kann man hier die Topic's auch verschieben?)



  • Hi,
    soweit ich das sehe, hast du vergessen in deiner Klassendeklaration der Methode
    sichVorstellen(); in Zeile 8, einen Rückgabewert zuzuordnen.

    MfG



  • Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum WinAPI in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • skullyan schrieb:

    Was ist falsch?

    1. Wie schon gesagt wurde fehlt der Rückgabetyp (void wäre hier sinnvoll) bei sichVorstellen(). Die einzigen Methoden die keinen Rückgabewert brauchen sind Konstruktoren und Destruktoren. Später hast du bei der Definition der Methode int als Rückgabetyp angegeben und gibst immer 0 zurück. Das ist keine zusätzliche information, daher ist wie gesagt void sinnvoller.
    2. Die Initialisierungsliste in Zeile 13 ist falsch. Schau dir dazu am Besten nochmal den entsprechenden Abschnitt in deinem buch/Tutorial an.


  • ...und Umlaute in Variablen sind BÄÄÄÄÄHHHH!!!!



  • Auto::Auto(): int Türen = 4
    {}
    

    habe ich da was verpasst?



  • xBlackKnightx schrieb:

    Auto::Auto(): int Türen = 4
    {}
    

    habe ich da was verpasst?

    nein:

    pumuckl schrieb:

    1. Die Initialisierungsliste in Zeile 13 ist falsch. Schau dir dazu am Besten nochmal den entsprechenden Abschnitt in deinem buch/Tutorial an.

    bb



  • jencas schrieb:

    ...und Umlaute in Variablen sind BÄÄÄÄÄHHHH!!!!

    Stimmt garnicht gesehn. Die sind nicht BÄÄH sondern schlichtweg undefiniert/verboten, also mehr als nur BÄÄH. Umlaute sind im Standard-Zeichensatz nicht enthalten.



  • pumuckl schrieb:

    jencas schrieb:

    ...und Umlaute in Variablen sind BÄÄÄÄÄHHHH!!!!

    Stimmt garnicht gesehn. Die sind nicht BÄÄH sondern schlichtweg undefiniert/verboten, also mehr als nur BÄÄH. Umlaute sind im Standard-Zeichensatz nicht enthalten.

    Sicher? Ich dachte ja ma, dass iwer geschrieben hätte, dass der jeweilge Zeichensatz für Varialben-Namen verwendet werden dürfte und somit ein ü o.ä.(zumindest in der Theorie) in Ordnung wäre?!

    bb


  • Administrator

    Also eine Variable ist ja ein Identifier, daher nach Standard (2003 - 2.10 Identifiers):

    identifier:
    nondigit
    identifier nondigit
    identifier digit

    nondigit: one of
    universal-character-name
    _ a b c d e f g h i j k l m
    n o p q r s t u v w x y z
    A B C D E F G H I J K L M
    N O P Q R S T U V W X Y Z

    digit: one of
    0 1 2 3 4 5 6 7 8 9

    Also um die Variable türe zu verwenden, müsste man dies so schreiben:

    #include <iostream>
    
    int main()
    {
    	int t\u00DCre = 10;
    
    	std::cout << t\u00DCre << std::endl;
    
    	return 0;
    }
    

    Und ja, das kompiliert wirklich 😉

    Grüssli



  • danke ^^



  • Hab's hingekriegt. Danke nochmals an alle...

    #include <iostream>
    
    using namespace std;
    
    class Auto {
    public:
        int Turen;
        Auto();
        ~Auto();
    	void sichVorstellen();
    };
    
    Auto::Auto(): Turen(4)
    {}
    
    Auto::~Auto()
    {
        cout << "Die Klasse Auto wurde aufgehoben" << endl;
    }
    
    void Auto::sichVorstellen()
    {
        cout << "Auto Tueren: " << Turen << endl;
    }
    
    void funktion();
    
    int main()
    {
    	funktion();
        cin.get();
        return 0;
    }
    
    void funktion()
    
    {
    	Auto ford;
    	ford.sichVorstellen();
    }
    


  • noch ein paar Anmerkungen:

    Auto::~Auto() 
    { 
        cout << "Die Klasse Auto wurde aufgehoben" << endl; 
    }
    

    Nein - lediglich eine Instanz dieser Klasse ist zerstört wurden...

    void funktion();
    nicht gerade sehr aussagekräftiger name, meinst du nicht?!

    Sich vorstellen ist auch komisch, aber ok... ^^

    bb



  • Dravere schrieb:

    Und ja, das kompiliert wirklich 😉

    Grüssli

    Laut Standard muss es das ja auch 😉
    Vermutlich übersetzen die gägngien Compiler bzw. ihre Präprozessoren auch Umlaute in eine solche Darstellung.



  • unskilled schrieb:

    noch ein paar Anmerkungen:

    Auto::~Auto() 
    { 
        cout << "Die Klasse Auto wurde aufgehoben" << endl; 
    }
    

    Nein - lediglich eine Instanz dieser Klasse ist zerstört wurden...

    void funktion();
    nicht gerade sehr aussagekräftiger name, meinst du nicht?!

    Sich vorstellen ist auch komisch, aber ok... ^^

    bb

    Stimmt ^^


Anmelden zum Antworten