正如标题所示,我无法在引用该类的两个私有方法的成员方法中实现多线程。我最初如何理解这个问题是因为一个实例不存在,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标记的链接与我的问题有什么关系。我建议请通过阅读我的问题。如果我还是错了,请告诉我如何