0

我有这个结构(数组),我想用 Class 对象填充。完成它的程序是什么。我使用的教程/书籍没有那么详细,我不知道该怎么做。(因为我的尝试失败了)

数组结构 struct.h

struct Arr{

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

结构体.cpp

void constr(Array &o){
    //Construct of 1*31 Matrix
    o=new Arr;
    o->days = days;
    o->M = new int[o->days];

班级

exp.h

class Expe {
private:
    int *obj;

public:
    Expe();
    ~Expe();

    void setObj(int ,int ,int ,int ,int ,int);
    void printObj();
    int getObj();
enter code here

exp.cpp

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

Expe::~Expe() {
    delete this->obj;
}

ps:我需要使用我自己的struct vector.h 是不允许的,它必须是动态的

4

1 回答 1

1

就像现在的代码一样,您的Arr结构可以保存一个整数数组。如果您希望它保存Expe对象,您可以将其定义为:

struct Arr{
    int days;
    Expe* M;
};

或者,更好的是,将其设为模板类:

template<typename T>
struct Arr
{
    int _size;
    T* M;
};

我还建议将构造函数移到内部struct不是方法中constr

template<typename T>
struct Arr
{
    int _size;
    T* M;
    Arr(int size) : _size(size)
    {
        M = new T[size];
    }
    //manage the memory:
    ~Arr()
    {
        delete[] M;
    }
};

通过使用模板,您可以根据需要进行专业化Arr

Arr<int> x(10);  //creates an array of 10 int's
Arr<Expe> y(10); //creates an array of 10 Expe's

附带说明一下,由于这不是 PHP,因此this->在类上下文中并不是真正需要的,除非您有一个与成员同名的局部变量,而您没有。

于 2012-04-11T20:44:32.613 回答