啥状况?invalid static_cast from type "sockaddr_in*" to type "sockaddr*"

Aniao 2010-09-08 04:28:51
reinterpret_cast和直接强制转换都可以,但是不应该static_cast不行啊

if(connect(sockfd, static_cast<sockaddr*>(&servaddr), sizeof(servaddr))<0)
{
......
}


编译器是g++ 4.5.0
...全文
673 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Aniao 2010-09-08
  • 打赏
  • 举报
回复
OK, THX
Jim_King_2000 2010-09-08
  • 打赏
  • 举报
回复
这两个结构体的实现貌似没有任何关系。因此,试试看reinterpret_cast。
冻结 2010-09-08
  • 打赏
  • 举报
回复
static_cast<>是按照编译器给定的转换关系来转,没有转换关系的,它不给转。

float f = 0.001;
static_cast<int>(f);
而不能
static_cast<int*>(&f);

reinterpret_cast<>二进制级别的转换,不考察转换内容。

所以人们会说C++的强制转化安全些。

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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