初始化指向数组的指针

时间:2013-03-21 16:41:28

标签: c++

我正在尝试在类构造函数中初始化指向struct数组的指针,但它根本不起作用...

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
    }

};

3 个答案:

答案 0 :(得分:6)

从声明中删除[]。它应该是

Particle *parts;

使用C ++,您可以使用std::vector

的好处
class Particles {
  // ...

 std::vector<Particle> parts;

 public:

    Particles (int count) : parts(count)
    {

    }
};

答案 1 :(得分:2)

Particle * parts[];

这是一个指针数组。要初始化它,您需要循环遍历数组,初始化每个指针以指向动态分配的Particle对象。

您可能只想让parts成为指针:

Particle* parts;

new[]表达式返回指向数组第一个元素的指针 - Particle* - 所以初始化将正常工作。

答案 2 :(得分:1)

试试这个:

class Particles {

私人:

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

Particle * parts;

公共:

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

};