【发布时间】:2017-10-07 18:21:35
【问题描述】:
我需要将 cv::Mat 分配给 cv::Point3d
cv::Point3d pt;
cv::Mat mat(3, 1, CV_64F);
pt = mat;
我尝试了两种不同的方式。第一次尝试如下:
template<typename _Tp>
inline cv::Point3_<_Tp> & cv::Point3_<_Tp>::operator = (const cv::Mat & mat){ ... }
但它提供了以下编译错误:
Out-of-line definition of 'operator=' does not match any declaration in 'Point3_<_Tp>'
我也尝试了这个不同的解决方案:
template<typename _Tp>
inline cv::Mat::operator cv::Point3_<_Tp>() const { }
但是,编译器不喜欢它并提供以下错误:
Out-of-line definition of 'operator Point3_<type-parameter-0-0>' does not match any declaration in 'cv::Mat'
我错过了什么?
【问题讨论】:
-
为什么不做一个免费的功能
cv::Point3d create_point(cv::Mat const& mat)?然后你可以说cv::Point3d pt = create_point(mat); -
因为我更喜欢避免显式调用函数作为 create_point()
标签: c++ opencv operator-overloading assignment-operator