由于错误导致无法在类中实现线程:无法从'overloaded-function'转换为'LPTHREAD_START_ROUTINE'

时间:2016-09-27 08:31:49

标签: c++ multithreading visual-studio-2013

正如标题所示,我无法在引用该类的两个私有方法的成员方法中实现多线程。我最初如何理解这个问题是因为一个实例不存在,CreateThread函数在创建一个对象之前就没有函数引用,为了解决这个问题,我使用'this'关键字来引用CreateThread函数中的方法而且我'我得到以下两个错误:
1.错误C2440:'type cast':无法从'overloaded-function'转换为'LPTHREAD_START_ROUTINE'
2.错误C2660:'CreateThread':函数不带5个参数

class DirectoryParser {
public:

    //Default Constructor
    DirectoryParser() {

    }

    //Parameterised Constructor
    DirectoryParser(string inDirPath, string outDirPath)  {
        _inDirPath = inDirPath;
        _outDirPath = outDirPath;
    }

    //Destructor
    ~DirectoryParser() {

    }

    //Public Methods

    int SearchDirectory();

private:

    //Data Members

    string _inDirPath;
    string _outDirPath;
    vector<string> _zipFiles;

    //Private Methods

    void SearchCurrent();

    void SearchZip();
};

我正在尝试实现线程的函数。

int DirectoryParser::SearchDirectory() {

    //Thread Creation
    t[0] = CreateThread(
        NULL,
        0,
        (LPTHREAD_START_ROUTINE)this->SearchCurrent,
        NULL,
        0,
        &threadID);
    t[1] = CreateThread(
        NULL,
        0,
        (LPTHREAD_START_ROUTINE)this->SearchZip,
        NULL,
        0,
        &threadID);

    //Check for completion of a thread
    WaitForMultipleObjects(
        2,
        t,
        TRUE,
        INFINITE);
    CloseHandle(t);
}

如果这个问题已被提出,我很抱歉,但是我搜索了一下,找不到它。我也刚开始学习多线程,所以对我很轻松。 :d

A similar question that was asked,但他将'this'本身作为方法的参数传递。

编辑:好吧,我看不出@Bo Persson标记的链接与我的问题有什么关系。我建议请通过阅读我的问题。如果我还是错了,请告诉我如何

0 个答案:

没有答案