Jestem bardzo sfrustrowany po kilku godzinach prób znalezienia lokalizacji shared_ptr. Żaden z przykładów, które widzę, nie pokazuje pełnego kodu zawierającego nagłówki shared_ptr
(i działające). Po prostu stwierdzając std
, tr1
i <memory>
nie pomaga w ogóle! Pobrałem doładowania i wszystko, ale nadal się nie pojawiają! Czy ktoś może mi pomóc, podając dokładnie, gdzie go znaleźć?
Dzięki, że pozwoliłeś mi dać upust mojej frustracji!
EDYCJA: Widzę, że mój tytuł został zmieniony. Przepraszam za to. Więc ... to również dlatego, że nie było dla mnie jasne, że shared_ptr jest "zależne od wersji C ++" -> dlatego nie podałem mojego środowiska -> dlatego prawdopodobnie dlatego było mi tak trudno je znaleźć.
Pracuję na MSVS2008.
EDYCJA 2: Nie wiem dlaczego, ale włączyłem [memory] i [boost / tr1 / memory.hpp] i [boost / tr1 / tr1 / memory], szukając wszędzie Shared_ptr .. oczywiście nie mogłem 't.
Dzięki za wszystkie odpowiedzi.
shared_ptr
nie jest częścią standardu. Jest to jednak tak powszechne, że niektórzy będą traktować to jako standard, mimo że jeszcze go nie ma.Odpowiedzi:
Są co najmniej trzy miejsca, w których możesz znaleźć
shared_ptr
:Jeśli Twoja implementacja C ++ obsługuje C ++ 11 (lub przynajmniej C ++ 11
shared_ptr
),std::shared_ptr
zostanie zdefiniowana w<memory>
.Jeśli Twoja implementacja C ++ obsługuje rozszerzenia biblioteki C ++ TR1,
std::tr1::shared_ptr
prawdopodobnie będzie to<memory>
(Microsoft Visual C ++) lub<tr1/memory>
(libstdc ++ g ++). Boost zapewnia również implementację TR1, której możesz użyć.W przeciwnym razie możesz uzyskać biblioteki Boost i użyć
boost::shared_ptr
, które można znaleźć w<boost/shared_ptr.hpp>
.źródło
tr1
.shared_ptr
nadal znajduje się wtr1
przestrzeni nazw. Jakieś przemyślenia na ten temat?-std=c++11
?Zwiększ Pierwsze kroki
Jeśli zamiast tego chcesz go użyć z Boost TR1
shared_ptr Przykład
źródło
dla VS2008 z aktualizacją pakietu funkcji shared_ptr można znaleźć w przestrzeni nazw std :: tr1.
z
jeśli masz przyspieszoną ścieżkę instalacji (na przykład @
C:\Program Files\Boost\boost_1_40_0
) dodaną do ustawień IDE:źródło
Jeśli your'e patrząc BOR impuls „s shared_ptr , mogłeś łatwo znaleźć odpowiedź przez googlowania shared_ptr po linki do docs i podjeżdżaniu kompletny przykład roboczych, takich jak ten .
W każdym razie, oto minimalistyczny, kompletny przykład roboczy, który właśnie zhakowałem:
Aby program
#include
mógł znaleźć nagłówek, biblioteki muszą oczywiście znajdować się w ścieżce wyszukiwania. W MSVC ustaw to w ustawieniach projektu> właściwości konfiguracji> C / C ++> dodatkowe katalogi dołączania. W moim przypadku jest to ustawione naC:\Program Files (x86)\boost\boost_1_42
źródło