没有重载函数“AfxBeginThread”的实例与参数列表匹配

Posted

技术标签:

【中文标题】没有重载函数“AfxBeginThread”的实例与参数列表匹配【英文标题】:no instance of overloaded function "AfxBeginThread" matches the argument list 【发布时间】:2012-03-20 17:13:21 【问题描述】:

我正在尝试使用 MFC 创建一个工作线程,所以这里是代码:

struct ThreadParam

    HWND mDlg;    // Note: A handle.
;

UINT TestMFCThread::Test( LPVOID pParam )
  //do work!

void TestMFCThread::OnBnClickedButton2()

    ThreadParam* param = new ThreadParam;
    param->mDlg = m_hWnd;
    AfxBeginThread(Test, param);

但它给了我这个错误:

1   IntelliSense: no instance of overloaded function "AfxBeginThread" matches the argument list
    argument types are: (UINT (LPVOID pParam), ThreadParam *)

idk whats wrong 它应该是正确的!

【问题讨论】:

【参考方案1】:

从AfxBeginThread() 的文档中,您需要将第二个参数转换为LPVOID

AfxBeginThread(Test, (LPVOID) param);

并将Test的调用约定设置为__cdecl

UINT __cdecl Test( LPVOID lParam)

【讨论】:

我试过了,但它仍然给我错误1 IntelliSense: no instance of overloaded function "AfxBeginThread" matches the argument list argument types are: (UINT (LPVOID pParam), LPVOID) 更新了关于调用约定的答案。 即使在添加__cdecl 之后,它仍然给我参数错误1 IntelliSense: no instance of overloaded function "AfxBeginThread" matches the argument list argument types are: (UINT __cdecl (LPVOID pParam), LPVOID) @MixedCoder:Test 是类中的方法吗? 将其移出TestMFCThread类或声明static【参考方案2】:

只需将你的成员函数声明为 static ,它就会解决问题

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于没有重载函数“AfxBeginThread”的实例与参数列表匹配的主要内容,如果未能解决你的问题,请参考以下文章

错误:没有重载函数的实例

错误:在构造函数(C++)中没有重载函数的实例

没有重载函数的实例匹配参数列表 C++

猎豹MFC--进程和线程--创建线程AfxBeginThread() SetDlgItemInt()线程暂停继续终止

AfxBeginThread 破坏了作为参数传递给线程函数的类中的 LPWSTR 值。为啥?

CreateThread,_beginthread与AfxbeginThread之间的区别