std::queue - przechowywanie std::shared_ptr

0

wedlug http://www.cplusplus.com/reference/queue/queue/push/

std:queue::push przyjmuje referencje:

 
void push (const value_type& val);
void push (value_type&& val);

Wiem tez, ze referencja do shared_ptr nie zwieksza use_count, co moze skutkowac nieoczekiwana destrukcja obiektu wskazywanego przez smart pointer.

Czy zna ktoś metodę bezpiecznego przechowywania w kontenerach std smart pointerow z std?

0

Przecież void push (const value_type& val); sobie w środku kopiuje obiekt a nie trzyma referencje do niego (bo niby jak miałby to robić?)

1

queue<shared_ptr<cośtam>> powinno działać prawidłowo, ale pytanie dlaczego nie użyjesz po prostu queue<cośtam>?

0

do usuniecia


#include <memory>
#include <iostream>
#include <queue>
int main() {
        std::shared_ptr<int> p1(new int(2));
        std::queue<std::shared_ptr<int>> queue;                                                                                                                                                                               
      queue.push(p1);
      std::cout<<p1.use_count();
}
 

res: 2

0

@Azarien, chcę mieć wskaznik na klasę abstrakcyjną a pod tymi wskaznikami rozne obiekty klas dziedziczacych

1 użytkowników online, w tym zalogowanych: 0, gości: 1