gpt4 book ai didi

c++ - 在类中创建新线程(windows)

转载 作者:可可西里 更新时间:2023-11-01 11:13:01 25 4
gpt4 key购买 nike

我想在一个类中创建一个新线程。问题是当我需要传递一个指向将在新线程中使用的函数的指针时。我无法将指针传递给该函数。引擎盖下的类函数基本上就是这样吧?

void foo (this);

那为什么这段代码拒绝编译呢?

class TimeClass
{
private:
DWORD dwThreadId;
HANDLE hThread;

LPTHREAD_START_ROUTINE Timer ();
public:
TimeClass ();
};

TimeClass::TimeClass ()
{
dwThreadId = CreateThread (NULL, 0, Timer, this, 0, &dwThreadId);
}

最佳答案

线程函数的签名必须是

DWORD WINAPI ThreadProc(LPVOID param);

普通(即非静态)C++ 成员函数没有 WINAPI 调用约定,因此不能用作线程函数。如果您将成员函数声明为静态的,那么它可以用作线程函数:

static DWORD WINAPI ThreadProc(LPVOID param);

关于c++ - 在类中创建新线程(windows),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19206861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com