2012-04-11 14 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が許可されていない使用する必要があり、それはコードは今あるので、あなたのArr構造体を保持することができますdyanmical

答えて

1

なければなりません整数の配列あなたはそれが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 –

関連する問題