2012-09-01 16 views
14

Mam następujący kod:dlaczego ciąg nie zadeklarowane w zakresie

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

static boost::thread_specific_ptr<string> _tssThreadNameSptr; 

I pojawia się następujący błąd

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

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

Ale ja w tym ciąg w moim #include.

+2

dodać std :: przed ciąg – innochenti

+1

możliwym duplikatu [C++ błąd: 'string' nie został zadeklarowany] (http://stackoverflow.com/questions/2890860/c- error-string-has-not-been-declaration) – juanchopanza

Odpowiedz

32

Musisz użyć std::string, ponieważ jest on w przestrzeni nazw std.

+0

Tys, zadziałało !! – Jimm

6

string jest w przestrzeni nazw std. Dostępne są następujące opcje:

  • Write using namespace std; po to i włączyć wszystkie nazwy std: wtedy można napisać tylko string na swoim programie.
  • Napisz using std::string po włączeniu, aby włączyć std::string: wtedy możesz napisać tylko string w swoim programie.
  • Zastosowanie std::string zamiast string
+1

Należy używać "using namespace std" lub "using std :: string" oszczędnie iw ograniczonym zakresie (na przykład wewnątrz funkcji). Nigdy nie używaj go w nagłówku, ponieważ może on zanieczyszczać globalny obszar nazw symbolami, których użytkownicy nie mogą chcieć. – alexc

Powiązane problemy