我创建了一个 shared_ptr
类 (_cells
) 的 vector 。
class Goban
{
public:
Goban();
~Goban();
private:
vector<vector<shared_ptr<Cell>>> _cells;
};
我这样初始化:
Goban::Goban() : _cells(18, vector<shared_ptr<Cell>>(18, make_shared<Cell>()))
{
}
问题是所有指针动态引用同一个指针(如果我理解正确的话)。 因此,当我使用 vector 更改单元类中的元素时,它会更改所有其他元素。
最佳答案
The problem is all pointers refer to the same pointer dynamically
这是因为您使用了 vector 的构造函数来制作值参数的 N 个拷贝。共享指针的拷贝指向共享对象。
I want separate pointer
那么不要使用 vector 的构造函数。您可以编写一个调用 make_shared
的循环来创建每个元素,并编写一个循环来为每个 vector 重复该操作。
关于c++ - 所有shared_ptr都引用我的 vector 中的同一个指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58759332/