gpt4 book ai didi

C++ 二维 shared_ptr 数组用抽象多态类型初始化

转载 作者:太空宇宙 更新时间:2023-11-04 12:47:33 26 4
gpt4 key购买 nike

我有多态类型,我需要初始化二维数组就像 shared_ptr** Map

这是我没有 shared_ptr 时的初始化程序,你能告诉我解决方案吗?错误是不兼容的指针类型 shared_ptr** 和 Game_Object***

Map = new shared_ptr<Game_Object>();
for (int i = 0; i < (int) width_; i++)
Map[i] = new shared_ptr<Game_Object>();

Map = new shared_ptr<Game_Object>();shared_ptr<Game_Object>*我需要得到这个“shared_ptr<Game_Object>**”我该怎么做?

最佳答案

i need to get this shared_ptr<Game_Object>** how i do that?

shared_ptr<Game_Object>**是一个原始指针,指向指向Game_Object 的共享指针的原始指针.我不知道为什么你需要这么复杂和令人困惑的设置。但是如果你想创建一个,你可以:

size_t x = 3, y = 4; // 3 x 4 2D array
std::shared_ptr<Game_Object> **arr = new std::shared_ptr<Game_Object>*[x]();
for (size_t i = 0; i < x; ++i)
arr[i] = new std::shared_ptr<Game_Object>[y]();

当然你需要给那些共享指针值:

for (size_t i = 0; i < x; ++i)
for (size_t j = 0; j < y; ++j)
arr[i][j] = std::make_shared<Game_Object>();

别忘了 delete[]完成后分配的内存

关于C++ 二维 shared_ptr 数组用抽象多态类型初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50666544/

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