Estou muito frustrado agora, depois de várias horas tentando descobrir onde shared_ptr está localizado. Nenhum dos exemplos que vejo mostra código completo para incluir os cabeçalhos para shared_ptr
(e funcionando). Simplesmente afirmando std
, tr1
e <memory>
não está ajudando em nada! Eu baixei boosts e tudo, mas ainda não aparece! Alguém pode me ajudar dizendo exatamente onde encontrá-lo?
Obrigado por me deixar desabafar minhas frustrações!
EDITAR: vejo que meu título foi alterado. Me desculpe por isso. Então ... foi também porque não estava claro para mim que shared_ptr é "dependente da versão C ++" -> é por isso que eu não indiquei meu ambiente -> provavelmente porque foi tão difícil para mim encontrá-lo.
Estou trabalhando no MSVS2008.
EDIT 2: Não sei por quê, mas incluí [memory] e [boost / tr1 / memory.hpp] e [boost / tr1 / tr1 / memory] enquanto procurava por shared_ptr em todos os lugares. Claro, não consegui 't.
Obrigado por todas as respostas.
shared_ptr
não faz parte do padrão. É tão comum que alguns vão tratá-lo como padrão, embora ainda não esteja disponível.Respostas:
Existem pelo menos três lugares onde você pode encontrar
shared_ptr
:Se os seus C ++ apoia a implementação C ++ 11 (ou pelo menos o C ++ 11
shared_ptr
), em seguida,std::shared_ptr
serão definidos em<memory>
.Se a sua implementação C ++ suportar as extensões de biblioteca C ++ TR1,
std::tr1::shared_ptr
provavelmente será em<memory>
(Microsoft Visual C ++) ou<tr1/memory>
(g ++ 's libstdc ++). O Boost também fornece uma implementação TR1 que você pode usar.Caso contrário, você pode obter as bibliotecas Boost e usar
boost::shared_ptr
, que podem ser encontradas em<boost/shared_ptr.hpp>
.fonte
tr1
.shared_ptr
ainda estava em umtr1
namespace. Alguma opinião sobre isso?-std=c++11
?Boost Getting Started
Se você quiser usá-lo do Boost TR1 em vez disso
shared_ptr Exemplo
fonte
para VS2008 com atualização de feature pack, shared_ptr pode ser encontrado no namespace std :: tr1.
do
se você tiver o caminho de instalação do boost (por exemplo @
C:\Program Files\Boost\boost_1_40_0
) adicionado às configurações do IDE:fonte
Se você está procurando o shared_ptr do impulso de bor boost , poderia facilmente encontrar a resposta pesquisando shared_ptr no Google , seguindo os links para os documentos e obtendo um exemplo funcional completo como este .
Em qualquer caso, aqui está um exemplo de trabalho minimalista completo para você que acabei de hackear:
Para que o
#include
encontre o cabeçalho, as bibliotecas obviamente precisam estar no caminho de pesquisa. No MSVC, você define isso em Configurações do projeto> Propriedades de configuração> C / C ++> Diretórios de inclusão adicionais. No meu caso, isso é definido comoC:\Program Files (x86)\boost\boost_1_42
fonte