我尝试使用绑定功能,但我的代码无法编译。我使用Qt5.3.1和MinGW 4.8。
我的班级:
class ProcessSearch : public QObject
{
Q_OBJECT
public:
explicit ProcessSearch(QObject *parent = 0);
void Search(const QString startDir, const QString destDir, QList<QString> wavList);
signals:
void status(int);
void statuslog(QString);
private:
QString startDir, destDir;
QList<QString> wavList;
};
我尝试像这样绑定搜索方法:
auto f = std::tr1::bind(&ProcessSearch::Search, std::tr1::placeholders::_1, pathDest, wavList);
f(wavpathList.at(0));
但是当我尝试构建它时,我有几个错误....第一个错误:
no match for call to '(std::tr1::_Mem_fn<void (ProcessSearch::*)(QString, QString, QList<QString>)>) (const QString&, QString&, QList<QString>&)'
我的错误在哪里? THX
答案 0 :(得分:3)
在绑定期间,您可能需要 ProcessSearch 的实例。
std::tr1::bind(&ProcessSearch::Search, this, ... )
注意,考虑使用C ++ 11,您可以轻松地用lambdas表达这些连接。或者至少考虑 std :: bind (例如,[CppReference] http://de.cppreference.com/w/cpp/utility/functional/bind)。