Я новичок в boost :: shared_ptr, используя его в первый раз.У меня есть std :: vector, содержащий boost :: shared_ptr, который я «заполнил» объектами, созданными из пользовательского класса.
В коде: std::vector<boost::shared_ptr<Foo>> data;
Вектор создается внутри функциив стеке.Я хочу получить доступ к некоторым элементам внутри моего вектора, используя vector.at (k).Восстановленный shared_ptr будет отправлен в другой поток, назовем его T1.Мой вектор выходит из области видимости, пока T1 все еще обрабатывает shared_ptr.
В коде:
void myFunction(){</p>
<pre><code> //lets get my object
boost::shared_ptr<Foo> obj = data.at(k);
//emit it to Thread T1 (i am using QT)
emit sendObjToThread1(obj);
}
Раньше я думал, что это не вызовет никаких проблем, но поскольку моя программа работает оченьстранно, я собираюсь изменить свое мнение.:) Чтобы прояснить это, я прошу вас на этой платформе сейчас.:)
Правильно ли, что мой объект будет уничтожен, если мой вектор выйдет из области видимости?Если да, то как мне получить глубокую копию shared_ptr (но не объект, который он содержит).Просто чтобы упомянуть это: мое приложение основано на QT.
Thx для чтения.