我在C ++中使用Armadillo库,我使用一组粒子,每个粒子都有自己在空间中的位置和速度。这就是为什么我考虑创建一个粒子数组,其中粒子定义为3x2矩阵(第一列= 3d位置,第二列= 3d速度)。我试过这个:
struct Particle{
arma::mat state(3,2);
};
但不起作用,它告诉我“预期的类型说明符”。 我只是想在每次创建一个Particle对象时初始化一个3x2矩阵(可能带有零)。
我也尝试了这个:
struct Particella {
arma::mat::fixed<3,2> state;
};
哪个有效(即使我不知道如何初始化它)但我不知道为什么第一个陈述没有。
答案 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);