Fehlendes ; vor <



  • was soll denn dieser fehler?= Ist im Code marktiert.

    using namespace std;
    
    class Cabc{
    
    public:
    Cabc(int classnr);
    ~Cabc();
    vector<char*>* getAbc(); // hier komtm der fehler, in der cpp ist vector included
    
    protected:
    	int classnr;
    
    };
    

    Danke



  • eruhi schrieb:

    using namespace std;
    

    Mach das niemals im Header! Dadurch legst du den Namensraum für alle inkludierenden Dateien irreversibel offen. Das macht Namensräume sinnlos.

    eruhi schrieb:

    was soll denn dieser fehler?= Ist im Code marktiert.

    vector<char*>* getAbc(); // hier komtm der fehler, in der cpp ist vector included
    

    Woher soll std::vector bekannt sein, wenn die Headerdatei <vector> erst in der .cpp-Datei eingebunden wird? Also bereits hier einbinden.

    Weshalb eigentlich so viele Zeiger? Benutze keine dynamische Speicherverwaltung, wenn sie nicht nötig ist! Suchst du vielleicht std::vector<std::string> (ganz ohne Zeiger)?

    eruhi schrieb:

    ~Cabc();
    

    Warum hast du den Destruktor definiert? Normalerweise musst du Kopierkonstruktor und Zuweisungsoperator ebenfalls definieren, oder gar keinen der drei (Regel der Grossen Drei). Aber wie gesagt, mit sinnvoller Speicherverwaltung – nämlich automatischer – ist das gar nicht nötig.



  • Nexus schrieb:

    using namespace std;
    

    Mach das niemals im Header! Dadurch legst du den Namensraum für alle inkludierenden Dateien irreversibel offen. Das macht Namensräume sinnlos.

    Beim std:: ist es doch egal oder nicht? Den tu ich immer mit using namespace std ; offen legen.



  • Nein. Nicht im Header.

    Stell dir nur mal vor, dass jemand einen Header included und der dann aber eine andere Version von string benutzen möchte. Das geht dann bei dem nur mit expliziter Qualifikation ohne, dass er weiss warum das so ist (bis er bei dir im Code nachschaut).


Anmelden zum Antworten