108 votes

Où est shared_ptr?

Je suis tellement frustré dès maintenant, après plusieurs heures à essayer de trouver où shared_ptr est situé. Aucun des exemples que j'voir le spectacle de code pour inclure les en-têtes d' shared_ptr (et de travail). Tout simplement en indiquant std, tr1 et <memory> ne l'aide pas du tout! J'ai téléchargé les boosts et tous, mais encore il ne veut pas s'afficher! Quelqu'un peut-il m'aider en disant exactement où le trouver?

Merci de me laisser libre cours à mon frustrations!

EDIT: Je vois mon titre a été modifié. Désolé à ce sujet. Donc... c'était aussi parce qu'il n'était pas clair pour moi que shared_ptr est "C++ dépendante de la version" --> c'est pourquoi je n'ai pas l'état de mon environnement --> donc probablement pourquoi il était si difficile pour moi de le trouver.

Je suis en train de travailler sur MSVS2008.

EDIT 2: Je ne sais pas pourquoi, mais j'avais compris [mémoire] et [boost/tr1/mémoire.php] et [boost/tr1/tr1/mémoire] tout en regardant partout pour les shared_ptr.. bien sûr, je ne pouvais pas.

Merci pour toutes les réponses.

172voto

James McNellis Points 193607

Il y a au moins trois endroits où vous pouvez trouver de l' shared_ptr:

  1. Si votre implémentation C++ prend en charge le C++11 (ou au moins le C++11 shared_ptr), alors std::shared_ptr sera définie en <memory>.

  2. Si votre implémentation C++ prend en charge le C++ TR1 bibliothèque d'extensions, std::tr1::shared_ptr sera probablement en <memory> (Microsoft Visual C++) <tr1/memory> g++'s libstdc++). Boost fournit également une TR1 mise en œuvre que vous pouvez utiliser.

  3. Sinon, vous pouvez obtenir les bibliothèques Boost et utiliser boost::shared_ptr, qui peut être trouvé dans <boost/shared_ptr.hpp>.

7voto

6voto

YeenFei Points 2100

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 un chemin d'installation boost (par exemple @ C:\Program Files\Boost\boost_1_40_0 ) ajouté à vos paramètres IDE:

 #include <boost/shared_ptr.hpp>
 

2voto

John Dibling Points 56814

Si votre e la recherche bor boost's shared_ptr, vous pourriez avoir facilement trouvé la réponse par googler shared_ptr, en suivant les liens vers les docs, et en tirant un exemple de travail comme cela.

En tout cas, ici, c'est un minimaliste complète d'un exemple fonctionnel pour vous que je viens d'piraté:

#include <boost/shared_ptr.hpp>

struct MyGizmo
{
    int n_;
};

int main()
{
    boost::shared_ptr<MyGizmo> p(new MyGizmo);
    return 0;
}

Pour que l' #include pour trouver l'en-tête, bibliothèques évidemment, il faut être dans le chemin de recherche. Dans MSVC, vous le régler dans les Réglages du Projet>Propriétés de Configuration>C/C++>autres Répertoires inclus. Dans mon cas, c'est C:\Program Files (x86)\boost\boost_1_42

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X