Я работаю в существующей кодовой базе C ++ и у меня возникают проблемы с вызовом функции.
Я пытаюсь использовать функцию линейной регрессии из более старой библиотеки Eigen, уже находящейся в кодовой базе, вы можете увидеть этот исходный код здесь , но ниже - соответствующее объявление.
template<typename VectorType>
void linearRegression(int numPoints,
VectorType **points,
VectorType *result,
int funcOfOthers )
{ ... }
Ниже приведена анонимная копия моего кода:
// MyClass has member variable int maxIdx = 5
void MyClass::myFunction()
{
Eigen::Vector2d points[maxIdx];
Eigen::Vector2d coeffs;
for(int i = 0; i < maxIdx; i++)
{
points[i] = Eigen::Vector2d(data->mydata[i].x, data->mydata[i].y);
}
Eigen::linearRegression( maxIdx, &points, &coeffs, 1 );
// do more stuff with coeffs
}
И это сообщение об ошибке, которое я получаю, когда Я пытаюсь скомпилировать:
myfile.cpp:803:67: error: no matching function for call to 'linearRegression(int, Eigen::Vector2d (*)[((MyClass*)this)->MyClass::maxIdx], Eigen::Vector2d*, int)'
Eigen::linearRegression( maxIdx, &points, &coeffs, 1 );
^
myfile.cpp:803:67: note: candidate is:
In file included from [redacted]:
lib/Eigen/src/Eigen2Support/LeastSquares.h:85:6: note: template<class VectorType> void Eigen::linearRegression(int, VectorType**, VectorType*, int)
void linearRegression(int numPoints,
^
lib/Eigen/src/Eigen2Support/LeastSquares.h:85:6: note: template argument deduction/substitution failed:
myfile.cpp:803:67: note: mismatched types 'VectorType*' and 'Eigen::Vector2d [((MyClass*)this)->MyClass::maxIdx] {aka Eigen::Matrix<double, 2, 1> [((MyClass*)this)->MyClass::maxIdx]}'
Это довольно точная копия примера кода в исходном коде библиотеки, поэтому я немного растерялся, как это исправить. Я не очень знаком с шаблонами, поэтому ошибка типа может быть связана с этим?