【发布时间】:2011-07-09 02:09:15
【问题描述】:
我是第一次使用 boost::shared_ptr 的新手。我有一个包含 boost::shared_ptr 的 std::vector,我用从自定义类创建的对象“填充”了它。
输入代码:std::vector<boost::shared_ptr<Foo>> data;
向量是在堆栈上的函数内部创建的。我想使用 vector.at(k) 访问我的向量中的一些元素。返回的 shared_ptr 将被发送到另一个线程,我们称他为 T1。当 T1 仍在处理 shared_ptr 时,我的向量超出范围。
在代码中:
void myFunction(){
//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 的。
感谢阅读。
【问题讨论】:
标签: c++ boost shared-ptr