Je suis tellement frustré après plusieurs heures passées à chercher où se trouve shared_ptr. Aucun des exemples que je vois ne montre un code complet pour inclure les en-têtes de shared_ptr
(Et travaillant). Déclarant simplement std
, tr1
et <memory>
n'aide pas du tout! J'ai téléchargé des boosts et tout mais ça ne s'affiche toujours pas! Quelqu'un peut-il m'aider en me disant exactement où le trouver?
Merci de m'avoir laissé 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 énoncé 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’avais inclus [memory] et [boost/tr1/memory.hpp] et [boost/tr1/tr1/memory] tout en cherchant partout le shared_ptr .. bien sûr, je ne pouvais pas 't.
Merci pour toutes les 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 C++ 11 shared_ptr
), puis std::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>
_ (libstdc ++ de g ++). Boost fournit également une implémentation TR1 que vous pouvez utiliser.
Sinon, vous pouvez obtenir les bibliothèques Boost et utiliser boost::shared_ptr
, qui peut être trouvé dans <boost/shared_ptr.hpp>
.
pour VS2008 avec mise à jour du module de fonctions, shared_ptr peut être trouvé sous l'espace de noms std :: tr1.
std::tr1::shared_ptr<int> MyIntSmartPtr = new int;
de
si vous aviez le chemin d'installation boost (par exemple @ C:\Program Files\Boost\boost_1_40_0
) ajouté à vos paramètres IDE:
#include <boost/shared_ptr.hpp>
Si vous êtes à la recherche de bor boost 's shared_ptr , vous auriez facilement trouvé la réponse en googler shared_ptr , en suivant les liens vers la documentation, et en tirant un exemple de travail complet tel que this .
En tout cas, voici un exemple de travail complet minimaliste que je viens de pirater:
#include <boost/shared_ptr.hpp>
struct MyGizmo
{
int n_;
};
int main()
{
boost::shared_ptr<MyGizmo> p(new MyGizmo);
return 0;
}
Pour que #include
Trouve l'en-tête, les bibliothèques doivent évidemment se trouver dans le chemin de recherche. Dans MSVC, vous définissez ceci dans Paramètres du projet> Propriétés de configuration> C/C++> Répertoires d'inclusion supplémentaires. Dans mon cas, il est défini sur C:\Program Files (x86)\boost\boost_1_42