CreateThread调用错误
CreateThread Call Giving Error
我想在一个类中启动一个线程,该线程反过来将调用同一类成员的函数。下面是我要构建的示例代码。
void CM::ExecuteIt()
{
// Some Calculations
if(/*Condition*/)
{
hThreadArray = CreateThread(
NULL, // default security attributes
0, // use default stack size
MyThreadFunction, // thread function name
(LPVOID)&nProcessImage, // argument to thread function
0, // use default creation flags
&dwThreadIdArray);
}
}
void CM::MyThreadFunction(LPVOID lpParam)
{
HANDLE hStdout;
PMYDATA pDataArray;
// Some calculations that needs to be done
}
但在构建它时,我得到以下错误'CM::MyThreadFunction':函数调用缺少参数列表;使用'&CM::MyThreadFunction'创建一个指向成员"
我不知道我怎么做错了。有人能帮我修一下吗?
不能将非静态成员传递给CreateThread
。传递的函数必须是独立的非成员函数,否则就是静态成员函数。一种常见的方法是这样的:
class MyClass {
void StartThread() {
CreateThread(..., ThreadProcTrampoline, this, ...);
}
static DWORD WINAPI ThreadProcTrampoline(LPVOID param) {
MyClass* self = static_cast<MyClass*>(param);
return self->RealThreadProc();
}
DWORD RealThreadProc();
};
任何想要传递给线程过程的数据,都可以作为类的数据成员存储。
或者,因为你标记你的问题C++11
,使用std::thread
。它在传递内容方面更加灵活
相关文章:
- C++ 结构错误"调用'erase'没有匹配函数
- 错误:调用 .. at return 语句时没有匹配函数
- 从C++代码抛出错误调用 JavaScript 回调函数 - nbind
- 错误:调用"make_pair"没有匹配函数
- 错误:调用 std::thread 没有匹配函数
- SFML 中的分段错误 调用 sf::窗口::关闭后
- 错误:调用函数指针没有匹配函数
- 汇编错误:调用基本型构造函数时无效的转换
- 错误:调用计数器::计数器()没有匹配函数
- C++ 通过函数指针错误调用成员函数
- 错误:调用 cargaison::cargaison() 时没有匹配函数
- 简单矩阵类,错误:调用私有构造函数
- 带有返回类型的错误调用模板到会员函数
- 错误:调用没有匹配函数(无法解决?
- 从 C 代码链接错误调用C++函数(使用 gcc 进行链接)
- 错误:调用 'pybind11::buffer_info::buffer_info 没有匹配函数
- 错误:调用terminate引发exceptionAbort陷阱:6
- 错误调用功能无法转换类型
- C++ 中的文件处理错误 - 调用"std::basic_fstream<char, std::char_traits<char> >::open(const char[8],
- 对成员函数set_value的错误调用是不明确的(在 xcode 中使用 pugixml 库)