32

我有以下代码:

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

static boost::thread_specific_ptr<string> _tssThreadNameSptr;

我收到以下错误

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

tssNaming.h:7:错误:未在此范围内声明“字符串”

但我在我的#include.

4

3 回答 3

65

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

于 2012-09-01T18:12:14.920 回答
12

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

  • 在包含后写入using namespace std;并启用所有std名称:然后您只能string在您的程序上写入。
  • 在 include 之后写入using std::string以启用std::string:然后您只能string在您的程序上写入。
  • 使用std::string代替string
于 2012-09-01T18:30:07.323 回答
3

我发现包括:

using namespace std;

您的 C++ 代码可以节省大量调试时间,尤其是在像您这样需要 std:: 字符串的情况下,它还有助于保持代码清洁。

考虑到这一点,您的代码应该是:

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

static boost::thread_specific_ptr<string> _tssThreadNameSptr;
于 2019-04-17T01:11:39.857 回答