学习1
来源:互联网 发布:淘宝退货纸条怎么写图 编辑:程序博客网 时间:2024/05/21 08:35
类的成员函数引用时.和->的使用是根据这两个操作符前面的操作数的不同确定的。
类的对象引用成员函数或数据成员时(统称成员)使用.操作符
类的对象的指针引用成员时,使用->操作符
===================================
我头文件写的是:
protected:
// 处理完成端口的消息的线程函数
DWORD WINAPI WorkerThread(LPVOID);
.cpp使用的时候,是:
m_WorkProcId[i]=CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)&CnetserverDlg::WorkerThread,CompletionPort, 0, &dwThreadId);
可是它报错,说是;
error C2440: “类型转换”: 无法从“DWORD (__stdcall CnetserverDlg::* )(LPVOID)”转换为“LPTHREAD_START_ROUTINE”
请问这个原因是什么啊?
-------------------------------------------
(LPTHREAD_START_ROUTINE)CnetserverDlg::WorkerThread
-------------------------------------------
函数名本身就代表一个地址,所以&符号去掉,另外,线程函数必须是全局函数或是静态成员函数
-------------------------------------------
线程函数必须是全局函数或者静态成员函数
-------------------------------------------
因为线程函数要是全局函数或静态成员函数。
静态成员函数只能访问静态成员变量。
--------------------------------------------
友元也用了,,发现还是无法访问,例子如下:
// 开始监听的线程函数
void WINAPI ListenProc();
// 处理完成端口的消息的线程函数
DWORD WINAPI WorkerThread(LPVOID);
class CnetserverDlg : public CDialog
{
// 构造
public:
friend void WINAPI ListenProc();
friend DWORD WINAPI WorkerThread(LPVOID);
private:
//完成端口
HANDLE CompletionPort;
// 服务器SOCKET
SOCKET m_serverSocket;
}
void WINAPI ListenProc()
{
// 临时客户端的SOCKET
SOCKET sClient;
int iaddrSize = sizeof(SOCKADDR_IN);
PPER_IO_DATA lpPerIOData;
while (TRUE)
{
sClient = accept(m_serverSocket, (struct sockaddr *)&sClient, &iaddrSize);//<----这里报错: error C2065: “m_serverSocket”: 未声明的标识符
}
--------------------------------------------
写两个函数,
一个是全局的线程入口函数, 如DWORD WINAPI ThreadEntry(LPVOID p);
一个是真正的线程处理函数, 而且是你的类的成员函数, 如CYourClass::DoThread(...);
将ThreadEntry做为CreateThread(...)的参数, 将CYourClass指针做为ThreadEntry(...)的参数, 并在ThreadEntry中调用CYourClass::DoThread。
-------------------------------------------
友元也应该使用类来引用。
比如, 将void WINAPI ListenProc() 改为void WINAPI ListenProc(CnetserverDlg* pDlg);
然后再在ListenProc函数体中这样引用:
- C/C++ code
- pDlg->m_serverSocket;
================================================================error c2228的一种说法:如果.y前的类对象是指针对象,或者.y前的对象未定义就会出现这样的问题。
.y前的类对象是指针对象要->y这样使用================================================================
- 学习1
- 学习1
- 学习1
- 学习1
- 学习1
- 学习1
- 学习1
- 学习1
- 学习1
- 学习1
- 学习1
- 机器学习-学习笔记1
- shell学习1--grep学习
- 学习笔记:git学习1
- Redis学习1--字符串学习
- 字符串学习学习(1)
- 【机器学习】监督学习 1
- 机器学习学习笔记1
- JS取FRAME或父窗口控件的值
- 用组合模式、策略模式、观察者模式结合来实现一个MVC
- 变量的分类及区别
- 用DWR做个简单的聊天室
- 鸭子不想再听雷-怎样把技术培训做好
- 学习1
- openssl 中文说明
- windows下搭建OpenGL ES开发环境
- 邮件营销必读系列四:防止邮件进入垃圾箱的十大法宝
- MIPS是什么意思
- 函数可重入性(reentrant)
- linux api笔记(10):删除文件
- 笑话
- 数据库水平切分的实现原理解析