嵌套 class 的动态数组,里面有一个数组?可以吗?

dynamic array of a nested class with an array in it? Can it be done?

此代码可以编译但立即崩溃。我只在 devcppPortable 上试过。我正在尝试制作一个可以存储大量复杂数据的 class(即具有多个 属性 集并且每个集包含多个数字的对象)。

创建的每个对象都将具有唯一数量的 属性 集和内部 属性 值。我希望能够在声明时调整 class,以免分配一堆未使用的 space。这样的事情甚至可能吗?

#include<iostream>
using namespace std;

class a
{
    public:
        int amount;
        struct b
        {
            int max;
            int* prop;
            b() {}
            void set(int&);
            ~b(){delete prop;}
        };
        b* property;
        a(int amt, int max0, int max1=0, int max2=0);
        ~a(){delete property;}
};

int main()
{
    a object(2, 3, 5);
    return 0;
}

a::a(int amt, int max0, int max1, int max2)
{
    amount = amt;
    property = new b[amt];

    switch(amt)
    {
        case 3:
            property[2].set(max2);
        case 2:
            property[1].set(max1);
        case 1:
            property[0].set(max0);
    }
}

void a::b::set(int& m) {max = m; prop = new int[max];}

你用 new[] 分配了 property 但用 delete 删除了它,而不是 delete[]