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?”

questionAnswers(3)

yourAnswerToTheQuestion