Zum Inhalt springen

Kleines Problem mit Klassen und Namespaces


laubi

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

allerdings will ich in der LError.h die includes raus bekommen
Warum? 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 einbinde
LError.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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...