如何用类对象填充数组结构?

时间:2012-04-11 20:39:23

标签: c++ oop

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

ARRAY STRUCT struct.h

struct Arr{

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

struct.cpp

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

CLASS

expe.h

class Expe {
private:
    int *obj;

public:
    Expe();
    ~Expe();

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

expe.cpp

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

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

ps:我需要使用自己的struct vector.h是不允许的,而且必须是dyanmical

1 个答案:

答案 0 :(得分: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->在类上下文中并不是必需的,除非你有一个与成员同名的局部变量,你没有