со следующим кодом < /p>
Код: Выделить всё
typedef Eigen::MatrixX3f mat3f;
typedef Eigen::Map map3f;
int npts = points.size();
map3f matA((float*)points.data(), npts, 3);
Eigen::MatrixX3f matB = Eigen::MatrixX3f::Constant(npts, 3, -1.f);
Eigen::Vector3f normal = matA.colPivHouseholderQr().solve(matB);
< /code>
Я получаю эту ошибку компиляции для последней строки: < /p>
static_assert не удастся: 'you_mixed_matrices_of_different_sizes' < /p> < /blockquote>
Очевидно, что компилятор (MSVCC 17) считает, что выход Solve () не совместим с Vector3f. < /p>
Однако его шаблон Кажется, указывает, что он ищет матрицу такого типа; Вот последний: < /p>
> D:\opensource\vcpkg\installed\x64-windows\include\Eigen\src\Core\PlainObjectBase.h(797,17):
1> see reference to function template instantiation 'void Eigen::internal::call_assignment_no_alias(Dst &,const Src &,const Func &)' being compiled
1> with
1> [
1> Derived=Eigen::Matrix,
1> Dst=Eigen::Matrix,
1> Src=Eigen::Solve,
1> Func=Eigen::internal::assign_op
1>
Подробнее здесь: https://stackoverflow.com/questions/794 ... rent-sizes