0

私はクラスオブジェクトで埋めたいこの構造(配列)を持っています。それを達成するための手順は何ですか。私が使用したチュートリアル/本はそれほど詳細ではなく、その方法がわかりません.(試行が失敗したため)

配列構造 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];

クラス

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 を使用する必要があります。h は許可されておらず、動的でなければなりません。

4

1 に答える 1

1

コードが現在のように、Arr構造体は整数の配列を保持できます。オブジェクトを保持したい場合は、次Expeのように定義できます。

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

または、さらに良いことに、それをテンプレート クラスにします。

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

メソッドの代わりにコンストラクターを移動することもお勧めします。structconstr

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 に答える