0

クラスコンストラクターで構造体配列へのポインターを初期化しようとしていますが、まったく機能しません...

class Particles {

private:

    struct Particle {
        double x, y, z, vx, vy, vz;
    };

    Particle * parts[];

public:

    Particles (int count)
    {
        parts = new Particle [count]; // < here is problem
    }

};
4

3 に答える 3

6

[]それらを宣言から削除します。そのはず

Particle *parts;

C++ を使用すると、次の利点を利用できますstd::vector

class Particles {
  // ...

 std::vector<Particle> parts;

 public:

    Particles (int count) : parts(count)
    {

    }
};
于 2013-03-21T16:42:28.883 に答える
2
Particle * parts[];

これはポインタの配列です。これを初期化するには、配列をループして、動的に割り当てられたParticleオブジェクトを指すように各ポインターを初期化する必要があります。

partsおそらく、ポインタを作成したいだけです。

Particle* parts;

このnew[]式は、配列の最初の要素(a)へのポインターを返すParticle*ため、初期化は問題なく機能します。

于 2013-03-21T16:43:42.143 に答える
1

これを試して:

クラス粒子{

プライベート:

struct Particle {
    double x, y, z, vx, vy, vz;
};

Particle * parts;

公衆:

Particles (int count)
{
    parts = new Particle [count]; // < here is problem
}

};

于 2013-03-21T16:45:45.437 に答える