我有一个问题,这里的 Eigen 教程中指示的逗号初始化似乎不起作用。
我有一个系统,其中有一个初始化向量的主要部分:
主要的:
VectorXd v;
和一个功能:
double useVector(VectorXd &v) {
dataI = model_.find();
v << model_[dataI].v[0], model_[dataI].v[1], model_[dataI].v[2], 1;
return dataI;
}
注意:该函数的使用方式如下:
double distance = useVector(v);
现在model_[dataI].v
是一个double[3]
,它肯定是有效的。我的理解是,这与此相同:
VectorXd v;
v << 1, 2, 3,
4, 5, 6,
7, 8, 9;
但它不起作用,代码在函数的逗号初始化阶段出现段错误。
注意:这虽然有效:
v.resize(4)
v[0] = model_[dataI].v[0];
v[1] = model_[dataI].v[1];
v[2] = model_[dataI].v[2];
v[3] = 1;
只要 v 像这样初始化:
VectorXd v(4);
这立即让我想知道调整大小的意义(但如果我把它拿走,那么它会再次出现段错误)。
有谁知道为什么会这样?