为什么字符串未在范围内声明

时间:2012-09-01 18:11:02

标签: c++ boost-thread

我有以下代码:

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

static boost::thread_specific_ptr<string> _tssThreadNameSptr;

我收到以下错误

  

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

     

tssNaming.h:7:错误:未在此范围内声明'string'

但我在#include中包含了字符串。

3 个答案:

答案 0 :(得分:44)

您必须使用std::string,因为它位于std命名空间。

答案 1 :(得分:7)

string位于std命名空间中。您有以下选择:

  • 在包含后写using namespace std;并启用所有std名称:然后您只能在您的程序上编写string
  • 在包含之后写using std::string以启用std::string:然后您只能在您的程序上编写string
  • 使用std::string代替string

答案 2 :(得分:0)

I find that including:

using namespace std;

To your C++ code saves a lot of time in debugging especially in situations like yours where std:: string is required and also it will help in keeping your code clean.

With this in mind, your code should be:

#include <string>
using namespace std;
#include <boost/thread/tss.hpp>

static boost::thread_specific_ptr<string> _tssThreadNameSptr;