Вопрос по c++, boost-thread – почему строка не объявлена в области видимости

19

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

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

добавить строку std :: before innochenti
возможный дубликатC++ error: ‘string’ has not been declared juanchopanza

Ваш Ответ

2   ответа
41

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

Тыс, это сработало !! Jimm
7

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

  • Write using namespace std; after the include and enable all the std names: then you can write only string on your program.
  • Write using std::string after the include to enable std::string: then you can write only string on your program.
  • Use std::string instead of string
Вы должны использовать «использование пространства имен std». или «используя std :: string»; экономно и в ограниченном объеме (например, внутри функции). Никогда не используйте его в заголовке, так как это загрязнит глобальное пространство имен символами, которые могут не понадобиться пользователям вашего заголовка.

Похожие вопросы