Standard String verwenden
-
Hallo,
ich würde statt AnsiString gerne den Standard C++ String verwenden, aber bei meckert der immer rum das er bei std::string einen Typ erwartet.
/* * $Id:$ */ #ifndef dgo_memoryH #define dgo_memoryH #include <string> using namespace std; /** * */ class DGOSynonm { private: map<std::string, int>Synonyms; map<int, std::string>Words; public: void setSynonym(std::string Basic, std::string synonym); void setWord(std::string synonym, std::string value); } #endif
-
Hi,
meckert er wirklich std::string an? ansonsten hätt ich gesacht die #include<map> fehlt.
-
Hast recht, ich dösel
-
Wieso kann ich using namespace nicht weglassen wenn ich std::string schreibe?
-
Hallo
Du kannst using namespace std ruhig weglassen (in header-files solltest du das sogar). Du musst dann bloss das std:: vor alle in diesem namespace definierten Klassen setzen (hier z.Bsp. auch die map).
Ciao
-
in meine Headerdateien schreibe ich immer
namespace { using namespace std; }
Hab aber bisher noch nicht überprüft ob diese Methode funktioniert.
-
Hallo,
Damit deklarierst du die using namespace directive innerhalb eines unnamed namespace. Der compiler wirds wohl übersetzen, bloss ich sehe den Sinn einer derartigen Darstellung nicht so direkt ein. Ein unnamed namespace wird normalerweise zur Deklaration statischer Variablen genutzt.
Bloss mal so zum nachschauen ein paar links über namespaces
http://www.winterdom.com/dev/cpp/nspaces.html
http://www.glenmccl.com/003.htm
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndeepc/html/deep04062000.aspCiao
-
sonst würde es ein
using std::string;
bzw
using std::mapauch tun
auf jeden Fall besser als using namespace std.