Ich brauche einen Lebenslauf :: Mat zu einem cv zuweisen :: Point3DC++ Überlastung Zuweisungsoperator einer Bibliotheksklasse
cv::Point3d pt;
cv::Mat mat(3, 1, CV_64F);
pt = mat;
ich es auf zwei verschiedene Arten zu tun versucht. Der erste Versuch ist die folgende:
template<typename _Tp>
inline cv::Point3_<_Tp> & cv::Point3_<_Tp>::operator = (const cv::Mat & mat){ ... }
aber es bietet den folgenden Compiler-Fehler:
Out-of-line definition of 'operator=' does not match any declaration in 'Point3_<_Tp>'
Ich habe auch versucht, diese andere Lösung:
template<typename _Tp>
inline cv::Mat::operator cv::Point3_<_Tp>() const { }
jedoch der Compiler nicht gefällt und bietet den folgenden Fehler:
Out-of-line definition of 'operator Point3_<type-parameter-0-0>' does not match any declaration in 'cv::Mat'
Was ich vermisse?
Warum nicht einfach eine freie Funktion machen 'cv :: Point3d create_point (cv :: Mat const & mat)'? Dann können Sie sagen 'cv :: Point3d pt = create_point (mat);' – CoryKramer
, weil ich es vorziehen, explizite Aufruffunktion als create_point() zu vermeiden – thewoz