此代码会立即编译但崩溃。我只在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];}
答案 0 :(得分:0)
您使用property
分配new[]
,但使用delete
删除delete[]
,而不是{{1}}