std :: tr1 :: bind()几个编译错误

时间:2014-10-23 07:42:41

标签: c++ mingw32

我尝试使用绑定功能,但我的代码无法编译。我使用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

1 个答案:

答案 0 :(得分:3)

在绑定期间,您可能需要 ProcessSearch 的实例。

std::tr1::bind(&ProcessSearch::Search, this, ... )

注意,考虑使用C ++ 11,您可以轻松地用lambdas表达这些连接。或者至少考虑 std :: bind (例如,[CppReference] http://de.cppreference.com/w/cpp/utility/functional/bind)。