Je suis tellement frustré en ce moment après plusieurs heures à essayer de trouver où se trouve shared_ptr. Aucun des exemples que je vois ne montre le code complet pour inclure les en-têtes pour shared_ptr
(et le travail). Disant simplement std
, tr1
et <memory>
n'aide pas du tout! J'ai téléchargé des boosts et tout cela n'apparaît toujours pas! Quelqu'un peut-il m'aider en me disant exactement où le trouver?
Merci de me laisser exprimer mes frustrations!
EDIT: Je vois que mon titre a été changé. Désolé pour ça. Donc ... c'était aussi parce qu'il n'était pas clair pour moi que shared_ptr est "dépendant de la version C ++" -> c'est pourquoi je n'ai pas indiqué mon environnement -> donc probablement pourquoi il était si difficile pour moi de le trouver.
Je travaille sur MSVS2008.
EDIT 2: Je ne sais pas pourquoi, mais j'incluais [memory] et [boost / tr1 / memory.hpp] et [boost / tr1 / tr1 / memory] en cherchant partout le shared_ptr .. bien sûr, je ne pourrais pas 't.
Merci pour toutes les réponses.
shared_ptr
ne fait pas partie de la norme. C'est si courant que certains le traiteront comme standard même si ce n'est pas encore le cas.Réponses:
Il y a au moins trois endroits où vous pouvez trouver
shared_ptr
:Si votre implémentation C ++ prend en charge C ++ 11 (ou au moins le C ++ 11
shared_ptr
), alorsstd::shared_ptr
sera défini dans<memory>
.Si votre implémentation C ++ prend en charge les extensions de bibliothèque C ++ TR1, alors
std::tr1::shared_ptr
sera probablement dans<memory>
(Microsoft Visual C ++) ou<tr1/memory>
(g ++ 's libstdc ++). Boost fournit également une implémentation TR1 que vous pouvez utiliser.Sinon, vous pouvez obtenir les bibliothèques Boost et les utiliser
boost::shared_ptr
, qui se trouvent dans<boost/shared_ptr.hpp>
.la source
tr1
.shared_ptr
était toujours assis dans untr1
espace de noms. Des pensées à ce sujet?-std=c++11
?Boost Premiers pas
Si vous souhaitez l'utiliser à la place de Boost TR1
Exemple shared_ptr
la source
pour VS2008 avec mise à jour du pack de fonctionnalités, shared_ptr se trouve sous l'espace de noms std :: tr1.
de
si vous aviez un chemin d'installation boost (par exemple @
C:\Program Files\Boost\boost_1_40_0
) ajouté à vos paramètres IDE:la source
Si your'e recherche bor boost de » l'shared_ptr vous auriez pu facilement trouvé, la réponse par googler shared_ptr , en suivant les liens vers la documentation, et en tirant un exemple de travail complet tel que cela .
Dans tous les cas, voici un exemple de travail complet et minimaliste pour vous que je viens de pirater:
Pour que le
#include
trouve l'en-tête, les bibliothèques doivent évidemment se trouver dans le chemin de recherche. Dans MSVC, vous définissez cela dans Paramètres du projet> Propriétés de configuration> C / C ++> Répertoires inclus supplémentaires. Dans mon cas, c'est réglé surC:\Program Files (x86)\boost\boost_1_42
la source