请教一个简单的语法问题(类型的转换)
这是在网上看到的一个完成端口这块的代码
LPOVERLAPPED pOverlapped=NULL;
SIo *pSIo=NULL;
。。。。。(省略部分代码)
pSIo=(SIo*)pOverlapped;
这里pOverlapped怎么能够强制转换成SIo呢,他们也没有继承关系呀
SIo的定义如下:
class SIo
{
public:
enum emIoType
{
IO_NULL,
IO_RECV,
IO_SEND,
IO_ACCEPTEX,
IO_CONNECTEX,
IO_DISCONNECTEX,
};
public:
SIo(SIo::emIoType type,SHandle *pHandle);
~SIo();
public:
OVERLAPPED m_overlapped;
WSABUF m_wsaBuf;
emIoType m_ioType;
SHandle *m_pHandle;
};
LPOVERLAPPED是完成端口里面的
typedef struct _OVERLAPPED {
ULONG_PTR Internal;
ULONG_PTR InternalHigh;
union {
struct {
DWORD Offset;
DWORD OffsetHigh;
} DUMMYSTRUCTNAME;
PVOID Pointer;
} DUMMYUNIONNAME;
HANDLE hEvent;
} OVERLAPPED, *LPOVERLAPPED;