2012-04-11 25 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