web-dev-qa-db-fra.com

pourquoi la chaîne n'est-elle pas déclarée dans la portée

J'ai le code suivant:

#include <string>
#include <boost/thread/tss.hpp>

static boost::thread_specific_ptr<string> _tssThreadNameSptr;

J'obtiens l'erreur suivante

g ++ -c -I $ BOOST_PATH tssNaming.h

tssNaming.h: 7: erreur: 'chaîne' n'a pas été déclarée dans cette étendue

Mais j'inclus de la ficelle dans mon #include.

21
Jimm

Vous devez utiliser std::string car il est dans l'espace de noms std.

44
Rapptz

string est dans l'espace de noms std. Vous disposez des options suivantes:

  • Écrire using namespace std; après l'inclusion et activez tous les noms std: vous ne pourrez alors écrire que string sur votre programme.
  • Écrire using std::string après l'inclusion pour activer std::string: vous ne pourrez alors écrire que string sur votre programme.
  • Utilisation std::string au lieu de string
7
user1434698

Je trouve cela comprenant:

using namespace std;

Pour votre code C++, vous économisez beaucoup de temps dans le débogage, en particulier dans des situations comme la vôtre où std :: string est requis et cela vous aidera également à garder votre code propre.

Dans cet esprit, votre code doit être:

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

static boost::thread_specific_ptr<string> _tssThreadNameSptr;
0
Nuelsian