动态创建一个对象指针数组

3
我有一个名为“poly”的类。我想动态创建一个指向 poly 对象的指针数组。变量 “totalPolynomials” 存储了 poly 对象的数量。
这是声明数组的代码:
poly **polyPtr;                         
polyPtr = new poly *[totalPolynomials];

我成功地创建了多边形对象,但不知道如何将它们的指针依次存储在数组中...


1
我建议使用 std::vector<std::unique_ptr<poly>>(或 std::vector<poly*>)。 - Jarod42
我建议不要这样做。相反,按照@Jarod42的建议去做。 - Lightness Races in Orbit
2个回答

4
如果你正在创建它们并希望存储它们,可以这样做:
poly ** polyPtr;
polyPtr = new poly* [totalPolynomials];

for(int i = 0; i<totalPolynomials; ++i)
{
    polyPtr[i] = new poly(arguments);
}

1

实际上,您没有设置数组中的指针。因此,作为演示,您需要编写类似于以下内容的代码:

poly** polyPtr = new poly*[totalPolynomials];
for(int i = 0; i < totalPolynomials; ++i)
    // You may need to pass constructor arguments here.
    polyPtr[i] = new poly();
    // or polyPtr[i] = myOtherPointer; in case you just wanna share it.

存储指针与分配新的内存相似。基本上,您需要用指针替换 new。
没有答案可以不带警告地提醒您,在使用 C++ 进行编程时,应考虑更高级别的数据和内存管理,以提高生产力和精神健康。
因此,我建议使用类似以下的内容:
std::vector<std::shared_ptr<poly>>

或者

std::vector<std::unique_ptr<poly>>

根据您的具体需求。

我认为他并不是在尝试创建一个二维数组,而是一个指针的一维数组... - riklund

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接