2012-04-11 85 views
0

我有这种结构(数组),我想用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:我需要用我自己的结构vector.h是不允许的,而且它必须是dyanmical

回答

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->不是类上下文中真的有必要,除非你有相同名称的局部变量的一员,你不这样做。

+0

谢谢你,现在我需要习惯模板,我对他们什么都没有......真的很有帮助,要研究一下模板:D – 2012-04-11 20:58:10