Was mache ich falsch ??



  • Wärst Du denn auch bitte so freundlich die Fehlermeldung niederzuschreiben, nicht jeder kauft sich gleich ein Visual C++ 2003 um Dein Programm damit zu compilieren...

    (Erster Blick: die Klammern nach SymtabEntry a in main stören)



  • Hallo,

    wäre nett gewesen, wenn du die Fehlermeldungen auch komplett mitangegeben hättest.

    However, hast du die SymtabEntry.cpp auch mitkompiliert?

    Außerdem ist dir bei der Instanzierung des Objekts ein Fehler unterlaufen:

    //test.cpp
    #include "SymtabEntry.h"
    #include <iostream>
    using namespace std;
    
    int main() {
        //SymtabEntry a();  Keine Klammern setzen
        SymtabEntry a;
    
        int b = 5;
        a.setType(b);
        cout << a.getType() << endl;
    
        return 0;
    }
    

    MfG

    GPC



  • Danke für die schnelle antwort.

    Der Visual C++ Toolkit 2003 Compiler lässt sich kostenfrei Downloaden ich benutze ihn , wie der name schno sagt, zum compilieren.

    was die Fehlermeldunngen betrifft, so könnte das etwas schwirig erden da ich sie in einer Dos Console stehen habe. Oder kann ich Screenshots irgendwie hochladen ??



  • Patryn schrieb:

    was die Fehlermeldunngen betrifft, so könnte das etwas schwirig erden da ich sie in einer Dos Console stehen habe. Oder kann ich Screenshots irgendwie hochladen ??

    ähm, mit der linken Maustaste den Text aus der Windows Konsole markieren, dann Enter drücken und er hat's kopiert. Alternativ kannst du über das Programm - Icon und Bearbeiten kopieren.

    MfG

    GPC



  • was die Fehlermeldunngen betrifft, so könnte das etwas schwirig erden da ich sie in einer Dos Console stehen habe. Oder kann ich Screenshots irgendwie hochladen ??

    Wieso kannst du keinen Text aus einer Konsole kopieren?
    Screen-Shot kostenlos hochladen geht (z.B.) mit imageshack.us.

    Gruß, Caipi



  • Hi,

    ok das mit dem aus der Console rauscopieren kannte ich bisher noch nicht.



  • //test.cpp
    #include "SymtabEntry.h"
    #include <iostream>
    using namespace std;
    
    int main() {
        SymtabEntry a; // <-- hier keine Klammern
        int b = 5;
        a.setType(b);
        cout << a.getType() << endl;
    
        return 0;
    }
    


  • Im übrigen vermisse ich bei Deiner Klasse SymtabEntry den Konstruktor und somit ist der Wert von type unbestimmt.

    // SymtabEntry.cpp
    #include "SymtabEntry.h"
    
    //Konstruktur
    SymtabEntry::SymtabEntry()
    {
        type = 0;
    }
    
    int SymtabEntry::getType() {
        return this->type;
    }
    
    void SymtabEntry::setType(int typ) {
        this->type = typ;
    }
    
    //SymtabEntry.h
    #ifndef _SYMTABENTRY_
    #define _SYMTABENTRY_
    #define NULL 0
    class SymtabEntry {
        private:
            int type;
        public:
            SymtabEntry(); //Konstruktor
            void setType(int typ);
            int getType();
    };
    #endif //_SYMTABENTRY_
    

    [EDIT]
    Rechtschreibfehler
    [/EDIT]



  • Hi!

    Wenn mans genau nimmt sollte er dann auch die Initialisierungsliste verwenden, statt:

    SymtabEntry::SymtabEntry()
    {
        type = 0;
    }
    

    Außerdem hält er sich nicht an die Const Correctness... Naja, was solls! 😉

    grüße



  • welche const-correctness? Hier werden nur built-ins übergeben. Da die by Value genommen werden (so soll's auch sein), ist auch kein const nötig.

    MfG

    GPC



  • GPC schrieb:

    welche const-correctness? Hier werden nur built-ins übergeben. Da die by Value genommen werden (so soll's auch sein), ist auch kein const nötig.

    Hmm? Geht wohl eher um

    int getType();
    // statt
    int getType() const;
    


  • ach so, ja gut, das hatte ich übersehen.


Anmelden zum Antworten