VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 787|回复: 6
打印 上一主题 下一主题

bind函数返回值没有与整数比较的操作数???

[复制链接]
14_avatar_middle
最佳答案
0 
跳转到指定楼层
1#
在线会员 发表于 2018-8-2 15:23:39 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
5驿站币
众所周知bind函数是将sockaddr和SOCKET绑定在一起。可是我的bind函数却发疯了。既然搞了个模板bind函数???什么鬼????
bind函数返回值没有与整数比较的操作数???

代码如下:
m_Server = (SOCKET)socket(AF_INET, SOCK_STREAM, 0);
    if(m_Server == -1)return false;
    sockaddr_in ServerAddr;
    memset(&ServerAddr, 0, sizeof(ServerAddr));
    ServerAddr.sin_family = AF_INET;
    ServerAddr.sin_addr.s_addr = INADDR_ANY;
    ServerAddr.sin_port = htons(6521);
   if (bind(m_Server, (LPSOCKADDR)&ServerAddr, sizeof(ServerAddr)) != 0)
                return false;

二进制“!=”: 没有找到接受“std::_Bind<false,void,SOCKET &,LPSOCKADDR,unsigned int>”类型的左操作数的运算符(或没有可接受的转换)

最佳答案

查看完整内容

好吧,那是我看错了,我以为是全角的 !符号,问题解决了就好!




上一篇:驱动程序能获得相对路径吗,驱动程序该如何主动向应用层发消息?
下一篇:C++编写Windows服务程序中调用Log4cpp产生日志问题
51_avatar_middle
最佳答案
11 
2#
online_admins 发表于 2018-8-2 15:23:40 | 只看该作者
liontxl 发表于 2018-8-2 17:16
不是的,c++11中定义了一个bind模板库,跟socket的bind重名了。再加上using namespace std了,所以编译器 ...

好吧,那是我看错了,我以为是全角的 !符号,问题解决了就好!
14_avatar_middle
最佳答案
0 
3#
ico_lz  楼主| 发表于 2018-8-2 15:26:13 | 只看该作者
bind函数在functional头文件下。
14_avatar_middle
最佳答案
0 
4#
ico_lz  楼主| 发表于 2018-8-2 15:26:43 | 只看该作者
bind函数在functional头文件下。声明如下:

        // TEMPLATE FUNCTION bind (implicit return type)
template<class _Fun,
        class... _Types> inline
        _Bind<false, void, _Fun, _Types...>
                bind(_Fun&& _Fx, _Types&&... _Args)
        {        // bind a function object
        return (_Bind<false, void, _Fun, _Types...>(
                _STD forward<_Fun>(_Fx), _STD forward<_Types>(_Args)...));
        }
51_avatar_middle
最佳答案
11 
5#
online_admins 发表于 2018-8-2 16:55:33 | 只看该作者
楼主范了个低级错误!
if (bind(m_Server, (LPSOCKADDR)&ServerAddr, sizeof(ServerAddr)) != 0)
这个 if 中的 !不等于号应该是用了全角的,改成半角的 ! 就可以了
14_avatar_middle
最佳答案
0 
6#
ico_lz  楼主| 发表于 2018-8-2 17:16:13 | 只看该作者
Syc 发表于 2018-8-2 16:55
楼主范了个低级错误!
if (bind(m_Server, (LPSOCKADDR)&ServerAddr, sizeof(ServerAddr)) != 0)
这个 if ...

不是的,c++11中定义了一个bind模板库,跟socket的bind重名了。再加上using namespace std了,所以编译器调用的是模板库bind。所以调用socket的bind不能想以前那样直接"bind(SOCKET, sockaddr, int)"了,而需要“::bind(...)”
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-12-15 07:46

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表
时时彩平台排名