嵌套类的动态数组,其中包含数组?可以吗?

时间:2015-03-21 03:47:28

标签: arrays class pointers dynamic nested

此代码会立即编译但崩溃。我只在devcppPortable上尝试过。我正在尝试创建一个可以存储大量复杂数据的类(即具有多个属性集的对象,每个集合都包含多个数字)。

创建的每个对象都有唯一数量的属性集和内部属性值。我希望能够在声明时塑造类,以便不分配一堆未使用的空间。这样的事情甚至可能吗?

#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];}

1 个答案:

答案 0 :(得分:0)

您使用property分配new[],但使用delete删除delete[],而不是{{1}}