я просто не могу получить QtConcurrent :: бежать работать с перегруженным статическим методом:QtConcurrent :: работать с перегруженным статическим методом
class Foobar {
public:
static ResType foo(const cv::Mat& data, const QStringList& names, int clusters = 5);
static ResType foo(const cv::Mat& data, const cv::TermCriteria& tc, const QStringList& names, const QStringList& otherNames, int clusters, int covType = 2);
}
QtConcurrent::run(
static_cast<ResType (*)(const cv::Mat&, const cv::TermCriteria&,
const QStringList&, const QStringList&, int, int)>(&Foobar::foo),
sampleData, tc, mDimNames, mGmmNames, mClusterN, mCovType);
я получаю:
error: no matching function for call to ‘run(ResType (*)(const cv::Mat&, const cv::TermCriteria&, const QStringList&, const QStringList&, int, int), cv::Mat&, cv::TermCriteria&, QStringList&, QStringList&, int&, int&)’ sampleData, tc, mDimNames, mGmmNames, mClusterN, mCovType);
Обратите внимание на реф (&) в сообщении об ошибке для целочисленных параметров. Это озадачивает меня ....
Виды Params:
cv::Mat sampleData, cv::TermCriteria tc, QStringList mDimNames, QStringList mGmmNames, int mClusterN, int mCovType
Я думал, что static_cast бы помочь отличить перегруженные. Единственное различие, которое я вижу, состоит в том, что параметры частично не const. Но вы можете взять const ref для параметра типа значения, так почему это имеет значение ...
Код в вашем вопросе - это сочетание оригинала и того, которое вы редактировали для публикации, насколько я могу догадаться. ('DkGmm' или' Foobar'? 'Foobar' находится в пространстве имен' bla'?) Обеспечение согласованности может помочь понять, что происходит. –
Извините, я исправил его –