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 回答