【发布时间】:2017-09-23 18:15:06
【问题描述】:
想象有一个共享指针向量
typedef vector< shared_ptr< classA > > PointerVector;
还有一个 B 类,它还具有一个共享指针向量作为成员,以及一个在该向量中推回已取消引用的共享指针的方法。
ClassB
{
public:
void add(classA &ref);
private:
PointerVector vector;
}
假设 main 为 add 函数提供了一个取消引用的 shared_ptr 实例:
主要:
shared_ptr< classA > sharedptr ( new classA );
ClassA &ref = *sharedptr;
ClassB B;
B.add(ref);
有没有办法实现 add 函数来接受取消引用的共享指针并将其转换为初始共享指针?然后将其推回矩阵中?
这就是我想要做的:
void ClassB::add(classA &ref) {
shared_ptr< classA > ptr = &ref;
vector.push_back( ptr );
}
NOTE1: 当 classA 添加到向量中时,我希望共享指针计数增加一。我不需要创建另一个共享指针,我想“找到”对象之前拥有的共享指针。
注意2:我不能使用make_shared,因为我目前在tr1
【问题讨论】:
-
你可以访问
enable_shared_from_this吗? -
@Revolver_Ocelot 我认为 enable_shared_from_this 包含在 tr1 中,是的
-
那么它是正确的做事方式。使用它。
标签: c++ pointers memory shared-ptr