【问题标题】:Dynamically create an array of object pointers动态创建对象指针数组
【发布时间】:2014-04-20 15:00:09
【问题描述】:

我有一个名为“poly”的类。我想动态创建一个指向 poly 对象的指针数组。变量“totalPolynomials”保存多边形对象的数量。

这是我声明数组的代码:

poly **polyPtr;                         
polyPtr = new poly *[totalPolynomials];

我成功创建了poly对象,但不知道如何将它们的指针一个接一个的存储在数组中...

【问题讨论】:

  • 我建议使用std::vector<std::unique_ptr<poly>>(或std::vector<poly*>)。
  • 我建议不要这样做。照@Jarod42 所说的去做吧。

标签: c++ arrays class object


【解决方案1】:

如果您正在创建它们然后想要存储它们,您可以执行类似的操作

poly ** polyPtr;
polyPtr = new poly* [totalPolynomials];

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

【讨论】:

    【解决方案2】:

    您实际上并没有在数组中设置指针,因此作为演示,您将编写如下内容:

    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.
    

    存储您的指针将是类似的,而不是为新的分配内存。基本上,你需要用你的指针替换新的。

    在使用 C++ 进行编程以提高生产力和心理健康时,您应该考虑比这更高级别的数据和内存管理。

    所以,我建议使用这样的东西:

    std::vector<std::shared_ptr<poly>>
    

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

    取决于您的确切愿望。

    【讨论】:

    • 我不认为他试图创建一个二维数组,而是一个一维指针数组......
    猜你喜欢
    • 1970-01-01
    • 2012-03-09
    • 1970-01-01
    • 2019-11-27
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    • 2021-03-29
    • 2020-11-18
    相关资源
    最近更新 更多