2012-09-01 10 views
14

の文字列宣言されていない理由を私は次のコードを持っている:スコープ

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

static boost::thread_specific_ptr<string> _tssThreadNameSptr; 

私は次のエラー

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

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

に取得しかし、私は私の#include内の文字列を含むていますが。

+2

の使用std::stringのstd ::文字列を追加 – innochenti

+1

の可能複製する前に、[C++エラー: 'string' が宣言されていません](http://stackoverflow.com/questions/2890860/c-エラー文字列が宣言されていません) – juanchopanza

答えて

32

std名前空間にあるので、std::stringを使用する必要があります。

+0

Tys、that worked !! – Jimm

6

stringは、std名前空間にあります。あなたは次のオプションがあります。その後、あなただけstringあなたのプログラム上に書き込むことができます。

  • には、すべてのstd名を有効にした後using namespace std;を書きます。
  • std::stringを有効にするためにインクルードした後にusing std::stringを書き込むと、プログラムにはstringのみ書き込むことができます。
  • 代わりstring
+1

'using namespace std'や 'std :: string'を使用するのは控えめで、範囲内のスコープ(関数内など)で使うべきです。あなたのヘッダのシンボルユーザが望んでいないかもしれないグローバルな名前空間を汚染するので、ヘッダでは絶対に使用しないでください。 – alexc