C ++:结构中的犰狳矩阵

时间:2018-02-15 11:31:41

标签: c++ armadillo

我在C ++中使用Armadillo库,我使用一组粒子,每个粒子都有自己在空间中的位置和速度。这就是为什么我考虑创建一个粒子数组,其中粒子定义为3x2矩阵(第一列= 3d位置,第二列= 3d速度)。我试过这个:

 struct Particle{
    arma::mat state(3,2);
};

但不起作用,它告诉我“预期的类型说明符”。 我只是想在每次创建一个Particle对象时初始化一个3x2矩阵(可能带有零)。

我也尝试了这个:

struct Particella {
    arma::mat::fixed<3,2> state;
};

哪个有效(即使我不知道如何初始化它)但我不知道为什么第一个陈述没有。

1 个答案:

答案 0 :(得分:0)

第一个代码试图调用一个构造函数,在这个构造函数中声明变量,括号中的afaik是非法的。 member initialization reference

使用c ++ 11,你可以做到

struct Particle {
    // There might be a better way to do this but armadillo's doc is currently down.
    arma::mat state{arma::mat(3, 2)}; 
};

如果没有,你可以尝试初始化Particle的初始化列表中的mat,就像这样

struct Particle {
    Particle() : state(arma::mat(3, 2)) {}
private:
    arma::mat state;
};

或者采用更像C的方式..

struct Particle {
    arma::mat state;
};

Particle p;
p.state = arma::mat(3, 2);