错误3:'initializing':不能从'void *'插座*'
Error 3 error C2440: 'initializing' : cannot convert from 'void *' to 'Socket *'
我有问题,当我实现默认构造函数,但我有错误
错误3错误C2440: '初始化':无法从'void *'转换为'Socket *' Webserver.h 164 1 Project2_SocketLib
Socket.h
//SOCKET Accept(sockaddr* clientInfo,int* clientInfoSize)
SOCKET Accept()
{
static int size = sizeof(sockaddr);
return accept(this->hSocket, 0,0);
}
Webserver.h
Webserver(short port_to_listen,request_func rf,HWND Hwnd, WPARAM wParam, LPARAM lParam)
{
Socket in(port_to_listen,"INADDR_ANY", true, Hwnd, true);
//request_func = rf;
while (1) {
Socket* ptr_s =(void*) in.Accept();
unsigned ret;
_beginthreadex(0,0,Request, ptr_s,0,&ret);
}
}
为什么要显式地将类型转换为void *
Socket* ptr_s =(void*) in.Accept();
,
Socket sock = in.Accept();
Accept
返回SOCKET。不需要转换为void *
或Socket *
我希望这能起作用
Socket* ptr_s =static_cast<Socket*>( in.Accept());
在c++中,与C语言不同,void*
不能隐式地转换为指向对象的指针。相反,应该直接转换为目标指针类型:
Socket* ptr_s = reinterpret_cast<Socket*>(in.Accept());
注意:选择c++风格的强制转换而不是C风格的强制转换。
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 在c++类上调用void函数
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- 在派生函数中指定void*参数
- C++为什么尽管我调用了void函数,它却不起作用
- 如何从void函数输出字符串
- 我应该使用什么来代替void作为变体中的替代类型之一
- 奇怪的结构&GCC&clang(void*返回类型)
- Arduino:for/while/if在void setup()或void loop()之前?——错误:之前需要不合格
- 为什么这个函数将"const char*"转换为"void* const"而不是"const void*"
- 引用一个已擦除类型(void*)的指针
- 将尾部调用void(i32,..)位转换为llvm::函数以获取FnAttribute
- 库函数需要一个 std::function<void(void)>,如何传入类函数?
- 如何将指针从一个void函数传递到另一个C++
- 为什么我在使用void函数时得到错误代码C2276
- void*到驱动程序中的UnicodeString
- 为什么在逗号分隔符上下文中将预增量的结果强制转换为void
- 指针没有更新它在void函数内部指向的值
- 不能将 "void *" 类型的值分配给类型 "TCHAR" 的实体
- 错误3:'initializing':不能从'void *'插座*'