Я реализовал фильтр Калмана OpenCV в предыдущем проекте C++, и теперь я пытаюсь использовать его в контексте класса.
Вот как я обычно строю свой фильтр Калмана:
cv::KalmanFilter KF(4,2,0);
Теперь я пытаюсь сделать фильтр членом класса, и у меня возникают проблемы с его инициализацией.
Я пытался:
class foo
{
public:
...
private:
cv::KalmanFilter m_filter(4,2,0);
};
И я получаю следующую ошибку:
error: expected identifier before numeric constant
cv::KalmanFilter m_filter(4,2,0);
^
foo.hpp:31:39: error: expected ‘,’ or ‘...’ before numeric constant
Если я попытаюсь удалить там инициализацию и сделать это в конструкторе класса с помощью:
...
private:
cv::KalmanFilter m_filter;
constructor(...)
{
m_filter(4,2,0);
}
Я получил:
error: no match for call to ‘(cv::KalmanFilter) (int, int, int)’
m_filter(4,2,0);
^
Вы случайно не выпускали m_filter где-нибудь? Скажем, в деструкторе foo
.
@DmitriiZ. Ваш метод работает, спасибо!
Я не выпускаю m_filter, не так ли?
Нет, не стоит.
После возни с конструктором cv :: KalmanFilter код, наконец, компилируется со следующим закрытым объявлением:
...
private:
cv::KalmanFilter m_filter{cv::KalmanFilter(4,2,0)};
вы можете просто сделать
constructor(...) : m_filter(4,2,0) {...}