我只是无法得到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将与区分重载帮助。我能看到的唯一区别是,参数部分不是常量。但你可以采取一个值类型参数,所以为什么会这么重要...
您的问题中的代码是原件和您为发布而编辑的代码的混合,尽我所能猜到。 ('DkGmm'或'Foobar'?'Foobar'在命名空间'bla'中?)使它一致可以帮助理解正在发生的事情。 –
对不起,我修正了它 –