laubi Geschrieben 19. April 2011 Teilen Geschrieben 19. April 2011 Hallo, ich war mal wieder am cpp üben als ich mich gefragt habe wie man eigentlich gut eine eigene bibliothek erstellen kann, die hinter einem Namensraum steht, also wie der std-namespace. nun bin ich zu folgendem code gekommen: LError.h: #include <string> #include <vector> #include <utility> #ifndef LBib_LError #define LBIB_LError true namespace LBib{ class LError; }; class LBib::LError{ protected: int error; ::std::string description; ::std::vector<::std::pair<::std::string,::std::string>> extra_information; public: LError(void); LError(int error); LError(int error, ::std::string errordescription); LError(int error, ::std::string errordescription, ::std::pair<::std::string,::std::string> extra_information); LError(int error, ::std::string errordescription, ::std::vector<::std::pair<::std::string,::std::string>> extra_information_vector); //etc... LError.cpp: #include <string> #include <vector> #include <utility> #include "LError.h" using namespace LBib; LBib::LError::LError(void){ this->error=false; } LBib::LError::LError(int error){ this->error=error; } //etc }; Das Programm klappt in der Form ohne probleme, allerdings will ich in der LError.h die includes raus bekommen, und das sollte eigentlich auch kein problem sein da ich sie ja schon in der LError.cpp einbinde, allerdings ist dies in der Paxis nicht so: 1>c:\users\laubi\documents\visual studio 2010\projects\schule\lbib\v1\lerror\lerror.h(14): error C2039: 'string': Ist kein Element von 'std' Also meine Fragen: Wie bekomme ich die includes raus ohne die errormeldung? das ist sicherlich nur ein kleiner fehler, aber ich komm einfach net drauf :/ Ist das mit dem Namespace richtig so, oder macht man es in der Praxis anderst? danke im vorraus, Laubi Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 19. April 2011 Teilen Geschrieben 19. April 2011 allerdings will ich in der LError.h die includes raus bekommenWarum? Du zwingst damit jeden Benutzer deines Headers, diese Header selbst einzubinden. Du sparst nichts dadurch, und erzeugst zusätzliche Arbeit für den Benutzer deiner Klasse. und das sollte eigentlich auch kein problem sein da ich sie ja schon in der LError.cpp einbindeLError.cpp ist uninteressant. Der Fehler entsteht doch gar nicht beim Compilieren von LError.cpp, sondern von der .cpp-Datei, in der die Klasse benutzt werden soll. Zusammenfassung: Lass es. Die Includedirektiven gehören da hin. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
laubi Geschrieben 19. April 2011 Autor Teilen Geschrieben 19. April 2011 hmm, na gut wenn es so gehört gehört es so, danke für die information Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.