почему строка не объявлена в области

У меня есть следующий код:

#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.

Ответ 1

Вы должны использовать std::string поскольку она находится в пространстве имен std.

Ответ 2

string находится в пространстве имен std. У вас есть следующие варианты:

  • Запись using namespace std; после включения и включения всех имен std: тогда вы можете написать только string в своей программе.
  • Напишите using std::string после включения включить std::string: тогда вы можете написать только string в своей программе.
  • Используйте std::string вместо string

Ответ 3

Я считаю, что в том числе:

using namespace std;

Ваш код C++ экономит много времени при отладке, особенно в таких ситуациях, как ваша, где требуется std :: string, а также поможет поддерживать ваш код в чистоте.

Учитывая это, ваш код должен быть:

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

static boost::thread_specific_ptr<string> _tssThreadNameSptr;