gpt4 book ai didi

c++ - 所有shared_ptr都引用我的 vector 中的同一个指针

转载 作者:行者123 更新时间:2023-12-02 03:00:36 25 4
gpt4 key购买 nike

我创建了一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com