konwersje shared_ptr i weak_ptr
Próbuję żonglować obiektami za pomocąstd::shared_ptr
istd::weak_ptr
. Scenariusz wygląda mniej więcej tak:
Mam obiekty klasychannel
który pochodzi z klasy abstrakcyjnejabstract::channel
(z czystymi funkcjami wirtualnymi). Mam pojemnikchannelContainer
(std::vector
) zawierające udostępnione wskaźniki (std::shared_ptr
) dochannel
Obiekty.
Teraz mamdeque (std::deque)
zawierające słabe wskaźniki(std::weak_ptr)
do każdego obiektu wchannelContainer
. Nazwijmy to dequefreeChannelQueue
.
Więc powiedzmy:
std::vector<std::shared_ptr<abstract::channel> > channelContainer;
std::deque<std::weak_ptr<abstract::channel > > freeChannelQueue;
//Assuming that both the containers are filled appropriately How do I go about implementeing the below functions?
abstract::channel& get_free_channel() {
//This should return a free channel object from 'freeChannelQueue' and pop the queue.
}
bool release_channel(abstract::channel& ch) {
//This should convert 'ch' to a std::weak_ptr (or std::shared_ptr) and push it to 'freeChannelQueue'
}
Szczególnie interesuje mnie „Jak przekonwertować odniesienie do obiektu na słaby wskaźnik?”