c++ - 为什么线程过程应该是静态的或成员函数

标签 c++ visual-c++ mfc pthreads

为什么线程过程应该是静态的或成员函数? 有正当理由吗?

最佳答案

非静态成员变量有一个编译器内部传递的隐式this参数。

你有

ClassInQuestion {
   void threadFunc( int );
}

并且编译器在内部创建了一个函数

void ClassInQuestion_threadFunc( ClassInQuestion* thisObject, int );

因此,除非线程过程接受指向函数的指针,该函数的第一个参数类型为 ClassInQuestion*,否则它将与预期的函数签名不匹配。

关于c++ - 为什么线程过程应该是静态的或成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3668743/

相关文章:

c++ - VC++2010 中的编译器错误(2008 年干净!), "ambiguous call to overloaded function"

c++ - MFC 的 CString 的奇怪行为

c++ - 通过拖放、MFC 更改 CTreeCtrl 项目的顺序

c++ - CRITICAL SECTION和TCriticalSection有什么关系

C++ 快速百分位数计算

c++ Sentinel循环,存储最小和最大数字

c++ - 64 位 dll 的大小比 32 位大 50%

c++ - 如何定位可执行文件中函数所在的位置?

c++ - 用于容器/类型名转发的递归模板类型

c++ - char* 加倍并再次返回 char*(64 位应用程序)