Вот этот код кричит как ни пытаюсь, shared_ptr<int> в shared_ptr<void> откастилось, а вот обратно никак...
boost::shared_ptr<int> g(new int(5));
boost::shared_ptr<void> f(g);
boost::shared_ptr<int> g2(f); // error C2664: 'boost::shared_ptr<T>::shared_ptr(const boost::shared_ptr<T> &)' : cannot convert parameter 1 from 'boost::shared_ptr<T>' to 'const boost::shared_ptr<T> &'
g = boost::shared_ptr<int>(f); // error C2440: '<function-style-cast>' : cannot convert from 'boost::shared_ptr<T>' to 'boost::shared_ptr<T>'
f = boost::shared_ptr<void>(g);
g = f; // error C2440: '<function-style-cast>' : cannot convert from 'const boost::shared_ptr<T>' to 'boost::shared_ptr<T>' c:\program files\boost\boost_1_39_0\boost\smart_ptr\shared_ptr.hpp 305
Как это сделать правильно ?
boost::static_pointer_cast
Здравствуйте, Caracrist, Вы писали:
C>Вот этот код кричит как ни пытаюсь, shared_ptr<int> в shared_ptr<void> откастилось, а вот обратно никак...
C>Как это сделать правильно ?
Для приведения типов интеллектуальных указателей из boost, используйте boost'овские касты:
boost::static_pointer_cast,
boost::const_pointer_cast и
boost::dynamic_pointer_cast.
"Дайте мне возможность выпускать и контролировать деньги в государстве и – мне нет дела до того, кто пишет его законы." (c) Мейер Ансельм Ротшильд , банкир.