why is string not declared in scope
Asked Answered
L

3

42

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.

Labrum answered 1/9, 2012 at 18:11 Comment(1)
possible duplicate of C++ error: ‘string’ has not been declaredTabby
G
72

You have to use std::string since it's in the std namespace.

Galop answered 1/9, 2012 at 18:12 Comment(0)
R
13

string is in the std namespace. You have the following options:

  • 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
Raimes answered 1/9, 2012 at 18:30 Comment(1)
You should use 'using namespace std' or 'using std::string' sparingly and in a bounded scope (for example, inside a function). Never use it in a header, since it would pollute the global namespace with symbols users of your header may not want.Snuff
N
6

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;
Narcisanarcissism answered 17/4, 2019 at 1:11 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.