如何在数组中保存指针对象? [关闭]
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 当前程序中的错误并保持我的回答。以上是关于如何在数组中保存指针对象? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章