2012-09-01 9 views
14

Ich habe den folgenden Code:warum Zeichenfolge in ihrem Umfang nicht erklärt

#include <string> 
#include <boost/thread/tss.hpp> 

static boost::thread_specific_ptr<string> _tssThreadNameSptr; 

bekomme ich folgende Fehler

g++ -c -I$BOOST_PATH tssNaming.h

tssNaming.h:7: error: 'string' was not declared in this scope

Aber ich bin auch string in meinem #include.

+2

std :: hinzufügen, bevor String – innochenti

+1

möglich Duplikat [C++ Fehler: 'string' wurde nicht deklariert] (http://stackoverflow.com/questions/2890860/c- Error-String-wurde nicht deklariert) – juanchopanza

Antwort

32

Sie müssen std::string verwenden, da es im Namespace std ist.

+0

Tys, das hat funktioniert !! – Jimm

6

string ist im Namespace std. Sie haben folgende Möglichkeiten:

  • schreiben using namespace std; nach dem schließen und aktivieren Sie alle std Namen: dann können Sie nur string auf Ihrem Programm schreiben.
  • Schreiben Sie using std::string nach dem Include zu aktivieren std::string: dann können Sie nur string auf Ihrem Programm schreiben.
  • Verwenden std::string statt string
+1

Sie sollten 'using namespace std' oder 'using std :: string' sparsam und in einem begrenzten Gültigkeitsbereich verwenden (z. B. innerhalb einer Funktion). Verwenden Sie es niemals in einer Kopfzeile, da es den globalen Namespace mit Symbolen verschmutzen würde, die Benutzer Ihrer Kopfzeile möglicherweise nicht möchten. – alexc

Verwandte Themen