Class 在类中声明可变长度数组

Class 在类中声明可变长度数组,class,variable-length-array,Class,Variable Length Array,伙计们。以下是我的代码: class Solar_system { public: Solar_system() { planet_no = 5; } int planet_no; int planet[planet_no]; }; 给出错误:非静态数据成员的使用无效Solar\u system::planet\u no 任何帮助都将不胜感激 > P>我假设这是在C++中。< /P> 在运行时创建阵列时,应动态分配阵列。像这样

伙计们。以下是我的代码:

class Solar_system
{
    public:

    Solar_system()
    {
        planet_no = 5;
    }

    int planet_no;
    int planet[planet_no];
};
给出错误:非静态数据成员的使用无效
Solar\u system::planet\u no


任何帮助都将不胜感激

> P>我假设这是在C++中。< /P> 在运行时创建阵列时,应动态分配阵列。像这样:

因此,您需要在类中创建一个指针,然后设置数组:

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

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

class太阳能系统{
公众:
太阳系
{
调整大小(5);
}
矢量行星;
};

您想做什么?您尝试了什么方法来解决这个问题?您能否告诉我以后是否应该删除阵列,如果是,何时删除。是的,应该删除阵列。类析构函数是删除它的好地方~太阳系(){delete[]planet;}总是这样叫它。如果需要调整/重新创建阵列的大小,您可以在将其设置为新的内存块之前将其删除。
class Solar_system {
public:

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

    std::vector<int> planets_;
};