【问题标题】:Declaring variable length array in a class在类中声明可变长度数组
【发布时间】:2013-01-29 19:24:10
【问题描述】:

伙计们。这是我的一段代码:

class Solar_system
{
    public:

    Solar_system()
    {
        planet_no = 5;
    }

    int planet_no;
    int planet[planet_no];
};

错误给定:非静态数据成员Solar_system::planet_no的使用无效

任何帮助将不胜感激。

【问题讨论】:

  • 你想做什么?您尝试过什么来解决这个问题?

标签: class variable-length-array


【解决方案1】:

我假设这是用 C++ 编写的。

在运行时创建数组时,它应该是动态分配的。像这样:

http://www.cplusplus.com/doc/tutorial/dynamic/

所以你会在类中创建一个指针,然后设置数组:

int * planet;
int planet_no;
Solar_system()
{
    planet_no = 5;
    planet = new int[planet_no];
}

【讨论】:

  • 你能告诉我这个数组之后是否应该删除,如果是的话,什么时候删除。
  • 是的,应该删除。类析构函数是删除它的好地方。 ~Solar_system(){ delete [] planet;} 这样它总是被调用。如果您需要调整/重新创建数组的大小,您可以在将其设置为新的内存块之前将其删除。
【解决方案2】:

不要自己管理内存,而是使用合适的容器。例如,std::vector

class Solar_system {
public:

    Solar_system()
    {
        planets_.resize(5);
    }

    std::vector<int> planets_;
};

【讨论】:

    猜你喜欢
    • 2012-12-17
    • 2013-08-11
    • 1970-01-01
    • 2020-08-04
    • 2015-06-29
    • 2021-10-26
    • 2012-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多