如何在数组中保存指针对象? [关闭]

Posted

技术标签:

【中文标题】如何在数组中保存指针对象? [关闭]【英文标题】:how can i hold pointer object in array? [closed] 【发布时间】:2021-12-30 13:21:41 【问题描述】:

我是新手。因为我的代码太长了,我无法编辑它以便重现,所以我会用一种简单的方式告诉你我做了什么

我有一个团队课程。我想将所有对象保存在一个数组中,以便我可以在其他地方到达它们并映射一些数据。 所以我做了一个基本上是这样做的函数(正是这部分 b[1] = a;)

int* a; // represent my object

int *b = new int[2]; //represent my static object pointer

b[1] = a;

错误说不能分配 int = *int 是的,绝对正确,但我必须将我的对象保存在数组中。我认为这可以工作,但没有......有没有办法在数组中保存一个对象,或者我可以说在指针初始化期间给我空间 *int?

【问题讨论】:

“我必须将我的对象保存在数组中”是什么意思? int* b[2]; b[0]=a; b[1]=a1; 等等。 【参考方案1】:

更好的方法是使用std::vector 来保存您的类对象。使用std::vector优势 是您不必显式处理内存管理。 vector 会处理的。

另外,我也会推荐使用智能指针

要解决上述错误,您可以使用以下示例:

    int i = 0, j = 0;//int objects
    
    int* p = &i, *q = &j; //pointer to int objects

    int **b = new int*[2]; //note i have added * on both the left and right hand side.  

    b[0] = p;
    b[1] = q;
    //dont forget to use delete below

请注意,您应该使用std::vector 和智能指针,但我添加了一个示例,以便您了解如何删除错误并将此示例用作参考。

【讨论】:

在这一点上,您最好将整个对象存储在向量中。因为谁拥有指针将变得越来越不清楚。如果需要指针,则具有 std::unique_ptr 的模型所有权。在这里查看指针/新建/删除的所有内容:isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines @PepijnKramer 是的vector 是要走的路。我已经在答案的顶部添加了一条注释。现在,我在答案的末尾也添加了一条注释,说这只是为了让 OP 可以看到如何删除所述错误并将此示例用作参考。 更多的是澄清你所拥有的,如果你设计它,它可能有一个指针的 std::vector。 (基本上没有人拥有参考资料)。但这通常不是人们应该做的第一件事。 @PepijnKramer 当然可以有一个vector 的指针。但我只想展示如何解决 OP 当前程序中的错误并保持我的回答。

以上是关于如何在数组中保存指针对象? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 中初始化指向动态二维数组的指针 [关闭]

如何制作具有动态大小的数组?动态数组的一般用法(也可能是指针)? [关闭]

在核心数据中如何保存字典或数组,如字符串数据? [关闭]

如何在Objective-C中动态分配指向对象的指针数组?

编译器如何理解指针和数组的声明[关闭]

如何计算指向不同向量数组中特定对象的指针的出现次数