0

我正在开发一个程序,需要制作一个对象数组,特别是我有一个 31x1 数组,其中每个位置都是一个对象,(每个对象基本上由 6 个整数构成)。这是我所拥有的,但出了点问题,我可以使用一些帮助谢谢。

31x1 结构头”

const int days=31;

struct Arr{

    int days;
    int *M;
};
typedef Arr* Array;

31x1 矩阵构造函数:

void constr(){
    int *M;
    M = new Expe[31]; // Expe is the class 

类头:

class Expe {
private:
    //0-HouseKeeping, 1-Food, 2-Transport, 3-Clothing, 4-TelNet, 5-others
    int *obj;
}

类对象构造函数:

Expe::Expe() {
    this->obj=new int[6];
}

请帮助...因为我很迷茫。

4

1 回答 1

3

new除非必须,否则不应使用。您正在动态分配内存,之后您必须手动删除。

相反,使用静态分配的数组:

struct Arr{
    int days;
    Expe M[31];
}

这样你就不需要构造 M,它会自动填充 31 个 Expe 对象。Expe 中的 int 数组也是如此。

(提示:结构和类几乎相同。它们唯一的区别是结构的默认可见性是公共的。除此之外,结构可以像类一样具有成员函数和构造函数。)

如果你必须使用动态分配,你应该遵循这个符号:

X* variableName = new X[size];
...
delete[] variableName; //Be sure to get rid of unused memory afterwards.

int*如果您想在其中存储一个整数数组,指针应该是类型的。

您还可以将const ints 用于数组大小声明。所以这是有效的:

const int size = 5;
int X[size];

您可以使用它来摆脱代码中的“幻数”。

Typedef 之类typedef Arr* Array;的通常在 C 中使用,而不是在 C++ 中那么多。几乎没有任何情况需要 typedef 这样的东西。

如果您发布整个代码,我们可能会提供更好的帮助。看来你的代码中不仅有一两个错误,还有一些基本的理解。

于 2012-04-11T19:28:00.763 回答