我定义了一个名为table的共享指针数组,如下所示;现在我想让这个表成为一个共享指针。但是我不知道该怎么做。我对此给予了适当的帮助。
class Reference {
public:
int ref;
Reference (int r)
{
ref = r;
}
~Reference ()
{
cout << "destructor " << endl;
}
};
class segment
{
public:
std::shared_ptr < Reference > *table;
segment ()
{
table = new std::shared_ptr < Reference >[SIZE];
for (int i = 0; i < SIZE; i++)
{
table[i] = std::make_shared < Reference > (i);
}
}
};
答案 0 :(得分:0)
好吧,我会说那个
segment
中的共享指针。您的table
字段是一个固定大小的区域(SIZE
)。如果你担心它的生命周期 - 只需考虑segment
实例的生命周期。您可以使用共享指针(即my_segment = std::make_shared<segment>()
)实例化段,然后在超出范围后传递它
现在,至于多个共享指针是table
的内容:你正在创建它们,当你销毁segment
时,它们可能会完全消除它们。除非你把segment
想象成一种“开胃小菜”的盘子,否则其他人会复制不同的共享指针,那么你就把它扔掉;事实并非如此,是吗?假设不是,只需要Reference table[SIZE]
成员,并完成它。
注意:
Reference
类型的内容。这也可能对这个答案产生影响;我忽略了它的暗示名称。