У меня возникла проблема, когда инициализация запятой, указанная в руководстве по 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);
что сразу же заставляет меня задуматься о точке изменения размера (но если я ее уберу, снова произойдет ошибка сегментации).
Кто-нибудь знает, почему это происходит?