C++ socket bind()函数报错 不存在从 "std::_Binder<std::_Unforced, SOCKET &, sockaddr *&, size_t &>" 到 "int" 的适当转换函数
昨天还可以正常运行的程序,怎么今天改了程序的结构就报错了呢?我明明没有改动函数内部啊!!!
内心无数只“草泥马”在奔腾,这可咋办呢?于是乎,小寅开始求助于亲爱的度娘......
由于小寅知识水平有限,终于在花了很长的时间后找到了原因所在,时间大概这么
长吧!!!哈哈哈
首先向各位小伙伴展示一下小寅的错误代码,如下图:
*******
*******
热心的度娘告诉小寅有一篇CSDN的文章有解决方法:
Ps: 原文地址:https://blog.csdn.net/youyicc/article/details/80403833 (小寅是爱护知识产权的好青年,再此奉上大佬的文章地址)
抱着崇拜大佬的心态(菜鸟内心独白),小寅勇敢的加上了::(此处双冒号是中文,主要是方便大家阅读,因为英文双冒号太小了)
果然在大佬的指引下,伟大了VS也屈服了,那让人恶心的红色波浪线终于去世了,哈哈哈哈。
然而。。。。。。。。。。。。。。
小寅可是个爱学习 的孩子,我并不知道为什么要这样做啊!!!
于是乎,我有吭哧吭哧地跑去找度娘了.....
又过了很久。。。。。。。。很久。。。。。。
我终于回来了~~~~
待我向大家娓娓道来,看完你就会不由自主的发出一声 “哦,原来是这样啊” 的赞叹,哈哈哈哈
首先,解释双冒号都有些啥子作用:
1. 表示“域操作符”:
例如:你有一个神奇的类,它叫做A(小明),A中有一个成员函数叫做function1(),当你要在cpp文件中定义这个函数时,应该这样写 A::function()
2. 表示全局函数,直接用在全局函数前:
这个用法就是我们上面的解决方法
3. 表示引用成员函数及变量,作用域成员运算符:
例如:System::Math::Sqrt() 相当于System.Math.Sqrt()
其次,解释完了双冒号的作用,可能有些小伙伴还是有点迷糊
重点来了,敲黑板(屏幕)!
1. 在我们一开始,bind的函数报错的原因是由于我们引用了命名空间std,如图:
2. 这时我们查找std下的函数是会发现有一个和套接字bind绑定同名的函数,如图:
3. 所以报错的原因就一目了然了:我们原本想要使用#include<WinSock2.h>头文件下的bind函数,结果却由于作用域的冲突造成
bind函数变成了std下的函数。
然后,进一步提出更优解:
不要随意的使用
using namespace std;
而应该这样使用
std::cout<<x<<std::endl
这样的话就不容易造成作用域冲突,而且也比在bind函数前加::要更加严谨。
证据如图:
******整篇文章就结束啦,希望这篇文章能够给小伙伴们提供一丁点帮助******
Thanks for your reading
C++ socket bind()函数报错 不存在从 "std::_Binder<std::_Unforced, SOCKET &, sockaddr *&, size_t &>" 到 "int" 的适当转换函数的更多相关文章
- php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
在php5.3环境下运行,常常会出现 Deprecated: Function ereg() is deprecated in...和Deprecated: Function ereg_replace ...
- js执行函数报错Cannot set property 'value' of null怎么解决?
js执行函数报错Cannot set property 'value' of null 的解决方案: 原因:dom还没有完全加载 第一步:所以js建议放在body下面执行, 第二步:window.on ...
- [转]html页面调用js文件里的函数报错onclick is not defined处理方法
原文地址:http://blog.csdn.net/ywl570717586/article/details/53130863 今天处理html标签里的onclick功能的时候总是报错:Uncaugh ...
- python 3 直接使用reload函数报错
reload()是python2 的内置函数可以直接使用,但是python3 直接使用此函数报错,需要导入importlib 模块 from importlib import reload
- Linux 下使用C语言 gets()函数报错
在Linux下,使用 gets(cmd) 函数报错:warning: the 'gets' function is dangerous and should not be used. 解决办法:采用 ...
- 光流法draw_flow()函数报错
光流法draw_flow()函数报错 import cv2 from scipy import * def draw_flow(im, flow, step=16): ""&quo ...
- updatexml和extractvalue函数报错注入
updatexml()函数报错注入 updatexml (XML_document, XPath_string, new_value); 第一个参数:XML_document是String格式,为XM ...
- Windows环境下启动Redis报错:Could not create server TCP listening socket 127.0.0.1:6379: bind: 操作成功完成。(已解决)
问题描述: 今天在windows环境下启动Redis时启动失败报错: 解决方案: ①运行命令:redis-cli.exe ②退出Redis ③运行命令:redis-server.exe redis.w ...
- sendEmail报错:at /usr/share/perl5/vendor_perl/IO/Socket/SSL.pm
sendEmail发送邮件是出现以下报错: ******************************************************************* Using the ...
随机推荐
- CentOS 下配置JDK
从官网上下载jdk到系统中,并解压好 tar –axvf jdk.tr.gz 1. PATH环境变量.作用是指定命令搜索路径,在shell下面执行命令时,它会到PATH变量所指定的路径中查找看是否能找 ...
- Android Studio "cannot resolve symbol R" 问题
初接触Android Studio,又遇到了 "cannot resolve symbol R"问题(以前在 Eclipse 也遇到过),网上方法不一,后来在stackoverfl ...
- 使用log4net记录ABP日志
demo地址:ABP.WindowsService 该文章是系列文章 基于.NetCore和ABP框架如何让Windows服务执行Quartz定时作业 的其中一篇. 参考:https://aspnet ...
- 【pycharm】Pycharm对 axios语法的支持问题
问题: 解决办法: 1,找到pychar的settings 2,ECMAScript6
- 代码生成java连接数据库的所需代码(超详细)
开始学习: round 1:(一开始学习当然还是要一步一步学习的啦,哪有什么一步登天!!!) a.准备工作:1.eclipse,mysql(这两个软件肯定要的啦,不然学什么把它们连接起来) 2.加载驱 ...
- Unbutu在VMWare中挂载共享文件夹
第一,安装VMTools,步骤自行搜索,安装成功后重启虚拟机. 第二,重启后,在虚拟机管理页面设置共享目录,选择总是启用,开启虚拟机. 第三,在终端进入挂载目录cd /mnt/hgfs/,通过命令su ...
- cogs 1254. 最难的任务 Dijkstra + 重边处理
1254. 最难的任务 ★ 输入文件:hardest.in 输出文件:hardest.out 简单对比时间限制:1 s 内存限制:128 MB [题目描述] 这个真的很难.算出 123 ...
- Netty学习(二)-Helloworld Netty
这一节我们来讲解Netty,使用Netty之前我们先了解一下Netty能做什么,无为而学,岂不是白费力气! 1.使用Netty能够做什么 开发异步.非阻塞的TCP网络应用程序: 开发异步.非阻塞的UD ...
- 算法与数据结构基础 - 二叉查找树(Binary Search Tree)
二叉查找树基础 二叉查找树(BST)满足这样的性质,或是一颗空树:或左子树节点值小于根节点值.右子树节点值大于根节点值,左右子树也分别满足这个性质. 利用这个性质,可以迭代(iterative)或递归 ...
- 集成方法 Ensemble
一.bagging 用于基础模型复杂.容易过拟合的情况,用来减小 variance(比如决策树).基础模型之间没有太多联系(相对于boosting),训练可以并行.但用 bagging 并不能有助于把 ...