问题
I have the following code:
#include <string>
#include <boost/thread/tss.hpp>
static boost::thread_specific_ptr<string> _tssThreadNameSptr;
I get the following error
g++ -c -I$BOOST_PATH tssNaming.h
tssNaming.h:7: error: 'string' was not declared in this scope
But I am including string in my #include
.
回答1:
You have to use std::string
since it's in the std
namespace.
回答2:
string
is in the std
namespace. You have the following options:
- Write
using namespace std;
after the include and enable all thestd
names: then you can write onlystring
on your program. - Write
using std::string
after the include to enablestd::string
: then you can write onlystring
on your program. - Use
std::string
instead ofstring
回答3:
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;
来源:https://stackoverflow.com/questions/12230156/why-is-string-not-declared-in-scope