为什么去掉静态成员函数里的static,后面就报错?

temp 2001-05-07 03:01:00
将原来的
static UINT CommThread(LPVOID pParam);
static void ReceiveChar(CSerialPort* port, COMSTAT comstat);
static void WriteChar(CSerialPort* port);
CWinThread* m_Thread;
...
改为:

UINT CommThread(LPVOID pParam);
void ReceiveChar(CSerialPort* port, COMSTAT comstat);
void WriteChar(CSerialPort* port);
CWinThread* m_Thread;
...

就报错,加上static就没错了。

E:\testado2\SerialPort.cpp(457) : error C2665: 'AfxBeginThread' : none of the 2 overloads can convert parameter 1 from type 'unsigned int (void *)'

相关代码:

BOOL CSerialPort::StartMonitoring()
{
if (!(m_Thread = AfxBeginThread(CommThread, this)))
return FALSE;
TRACE("Thread started\n");
return TRUE;
}

UINT CSerialPort::CommThread(LPVOID pParam)
{
... ...
}
...全文
290 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
temp 2001-05-10
  • 打赏
  • 举报
回复
为什么线程函数一定要用静态成员函数呢?
temp 2001-05-08
  • 打赏
  • 举报
回复
<<一看就知道老兄的C++基础没学好!,花点时间学一下吧!
是呀是呀,回去好好学C++!

<<static 是定义静态变量,去掉之后,就不会有这个变量,导致出错。敢问阁下为何要去掉?
我想让线程函数处理串口类里的非静态成员变量。(别笑!)
wkp 2001-05-07
  • 打赏
  • 举报
回复
static 是定义静态变量,去掉之后,就不会有这个变量,导致出错。敢问阁下为何要去掉?
vcmfc 2001-05-07
  • 打赏
  • 举报
回复
这跟全局变量初始化是一样的,只不过要加入XXXX::静态成员=XXX;


一看就知道老兄的C++基础没学好!,花点时间学一下吧!
temp 2001-05-07
  • 打赏
  • 举报
回复
静态成员在那里初始化?
temp 2001-05-07
  • 打赏
  • 举报
回复
还是不明白为什么“线程函数要么用全局函数,要么用静态成员函数”?
temp 2001-05-07
  • 打赏
  • 举报
回复
pgfun 2001-05-07
  • 打赏
  • 举报
回复
是为了去掉函数里的this指针啦
temp 2001-05-07
  • 打赏
  • 举报
回复

<<线程函数要么用全局函数,要么用静态成员函数
为什么?

smint 2001-05-07
  • 打赏
  • 举报
回复
好像,类内的成员,只能用static,这样才能有固定的地址用于使用,否则在编译时地址是不可预见的.就会报错.作为CALLBACK的函数就是这样的(我现在去试试)(不知正确与否,还请发表真知灼见)

sunriselx 2001-05-07
  • 打赏
  • 举报
回复
不会吧?你原来的好像也不对呀:AfxBeginThread的第二个参数应该是LPVOID,this不一定是什么类型的,象你那样做好象不行。
另外,只有静态函数才能访问静态成员,是不是你在那几个函数中访问静态成员了,也可能会出毛病。
xyzboat 2001-05-07
  • 打赏
  • 举报
回复
线程函数要么用全局函数,要么用静态成员函数
pgfun 2001-05-07
  • 打赏
  • 举报
回复
加上静态声明static后函数中的this指针就被去掉.这是一些由系统调用的函数的必要条件
temp 2001-05-07
  • 打赏
  • 举报
回复
这是怎么回事?

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧