为什么不串在范围内声明(why is string not declared in scope)

2019-06-27 16:38发布

我有以下代码:

#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

Answer 1:

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



Answer 2:

string是在std命名空间。 您有以下选择:

  • using namespace std; 包括和启用所有后std名称:那么你可以只写string在你的程序。
  • using std::string后,包括启用std::string :那么你可以只写string在你的程序。
  • 使用std::string ,而不是string


Answer 3:

我发现,其中包括:

using namespace std;

为了你的C ++代码,节省了大量的时间在等,其中需要的std :: string你的情况下,特别是调试,并会保持你的代码干净的帮助。

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

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

static boost::thread_specific_ptr<string> _tssThreadNameSptr;


文章来源: why is string not declared in scope