当前位置: 首页 > news >正文

江苏省句容建设局网站拼多多关键词怎么优化

江苏省句容建设局网站,拼多多关键词怎么优化,新建html网站,电子商务网站 技术方案原出处:http://blog.csdn.net/sxhelijian/article/details/8859653?utm_sourcetuicool&utm_mediumreferral 有学生向我求助,他编了一个程序,设计一个“点”类,求出两点距离的程序。程序看着没有问题,却出了一大堆…

原出处:http://blog.csdn.net/sxhelijian/article/details/8859653?utm_source=tuicool&utm_medium=referral

有学生向我求助,他编了一个程序,设计一个“点”类,求出两点距离的程序。程序看着没有问题,却出了一大堆的错误。程序如下:

[cpp] view plaincopy
print?
  1. #include <iostream>  
  2. #include <math.h>  
  3. using namespace std;  
  4. class point  
  5. {  
  6. public:  
  7.     double x;  
  8.     double y;  
  9. };  
  10. double distance(point p1,point p2);  
  11.   
  12. int main()  
  13. {  
  14.     point p1= {3,5},p2= {6,9};  
  15.     cout<<distance(p1,p2);  
  16. }  
  17.   
  18. double distance(point p1,point p2)  
  19. {  
  20.     double d=sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));  
  21.     return d;  
  22. }  

  在codeBlocks下编译,错误直接引到stl_iterator_base_types.h文件中,错误一大堆:

[plain] view plaincopy
print?
  1. ||=== example, Debug ===|  
  2. D:\C++\codeBlock\example\example.cpp|15|instantiated from here|  
  3. d:\program files\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\bits\stl_iterator_base_types.h|127|error: no type named 'iterator_category' in 'class point'|  
  4. d:\program files\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\bits\stl_iterator_base_types.h|128|error: no type named 'value_type' in 'class point'|  
  5. d:\program files\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\bits\stl_iterator_base_types.h|129|error: no type named 'difference_type' in 'class point'|  
  6. d:\program files\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\bits\stl_iterator_base_types.h|130|error: no type named 'pointer' in 'class point'|  
  7. d:\program files\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\bits\stl_iterator_base_types.h|131|error: no type named 'reference' in 'class point'|  
  8. ||=== Build finished: 5 errors, 0 warnings ===|  

  对于这样的问题,初学C++的同学肯定直接蒙。这里的问题出在命名空间中名字的冲突,再多说一些,与STL也有些关系。不过,解决这样的问题并不一定得知道这么多。我还是试着与大家绕开这个环节,从其他途径找点感觉。

  光标置到“D:\C++\codeBlock\example\example.cpp|15|instantiated from here|”一行,双击,发现错误在程序的第15行。鼠标放到15行的distance函数上时,浮现出了一行提示,见图:


  看出了一点疑惑:distance不是在这个程序中编的自定义函数吗?怎么识别成了std::distance(...,...)?

  这就是问题的根源!编译器没有将distance当作自定义函数处理!至于进一步的解释不再深入,抓住这个要点,程序就可以改好了。

  修改方法之一:既然函数名字上出问题,试试改个名字?将distance改个名字,如dist,一切正常。

  修改方法之二:凭什么让我改?distance多好的一个函数名(不过提醒,可以自学一下命名空间了,此是好机会,不必等着老师讲。)需要做的工作是,不用std命名空间(删除或注释掉using namespace std;一行)然后在依赖std的cout前加上std::,程序如下:

[cpp] view plaincopy
print?
  1. #include <iostream>  
  2. #include <math.h>  
  3. //using namespace std;//不再用命名空间std  
  4. class point  
  5. {  
  6. public:  
  7.     double x;  
  8.     double y;  
  9. };  
  10. double distance(point p1,point p2);  
  11.   
  12. int main()  
  13. {  
  14.     point p1= {3,5},p2= {6,9};  
  15.     std::cout<<distance(p1,p2);  //保证编译系统知道用std命名空间中的cout  
  16. }  
  17.   
  18. double distance(point p1,point p2)  
  19. {  
  20.     double d=sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));  
  21.     return d;  
  22. }  
  修改方法之三:方法二有点自私了。std中有不少常用的东东,就此全都得写std::,这个程序中无妨,如果再大些的程序呢?胳膊不必和大腿拧,换种思路,也是一样。将distance在调用时,写作为::distance,指出distance是当前程序中定义的名字。问题解决就此解决,程序如下:

[cpp] view plaincopy
print?
  1. #include <iostream>  
  2. #include <math.h>  
  3. using namespace std;  
  4. class point  
  5. {  
  6. public:  
  7.     double x;  
  8.     double y;  
  9. };  
  10. double distance(point p1,point p2);  
  11.   
  12. int main()  
  13. {  
  14.     point p1= {3,5},p2= {6,9};  
  15.     cout<<::distance(p1,p2);//指定distance不是别处的,就是本文件中定义的  
  16. }  
  17.   
  18. double distance(point p1,point p2)  
  19. {  
  20.     double d=sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));  
  21.     return d;  
  22. }  
  修改方法之四:前三种方法中,个人倾向于第一种,山不转水转,换个名字也妨。其实这也不是最好的。原始的程序中定义了类,但只有数据成员,没有成员函数,像求距离之类的,设计为成员函数多好。面向对象的机制就是为了信息封装等特性的,为何要如此浪费?这个程序我就不写了,请自行解决。


  补充:用其他编程环境时,观察和修改的方法也类似,例如在VS2008下编译,错误居然有25个之多:

[plain] view plaincopy
print?
  1. 1>------ 已启动生成: 项目: example, 配置: Debug Win32 ------  
  2. 1>正在编译...  
  3. 1>example.cpp  
  4. 1>d:\program files\microsoft visual studio 9.0\vc\include\xutility(764) : error C2039: “iterator_category”: 不是“point”的成员  
  5. 1>        d:\c++\vs2008 project\example\example\example.cpp(5) : 参见“point”的声明  
  6. 1>        d:\c++\vs2008 project\example\example\example.cpp(16): 参见对正在编译的类 模板 实例化“std::iterator_traits<_Iter>”的引用  
  7. 1>        with  
  8. 1>        [  
  9. 1>            _Iter=point  
  10. 1>        ]  
  11. (此处省略N多的提示)  
  12.   
  13.   
  14. 1>生成日志保存在“file://d:\C++\VS2008 project\example\example\Debug\BuildLog.htm”  
  15. 1>example - 25 个错误,0 个警告  
  16. ========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========  


  在源程序中,鼠标光临distance函数时,可以看出编译器对distance函数有两种解释,如下图:


  编译器对此局面真的很迷茫了。余下的修改思路相同,不再罗嗦。



http://www.lbrq.cn/news/2780371.html

相关文章:

  • 信息型企业网站有哪些百度客户端下载
  • 自己做购物网站百度官方推广
  • 专业建站公司设计方案能让手机流畅到爆的软件
  • 河南定制网站建设企业国家卫生健康委
  • 网站中flash怎么做小程序开发多少钱
  • 淘宝客自己做网站教程上海关键词推广公司
  • 百度搜索搜不到网站客户关系管理
  • 网上支付网站怎摸做站长工具 忘忧草
  • 网站域名解析后多久能生效哈尔滨网络推广
  • 贵州网站建设.com十大营销策略有哪些
  • 苏州吴江做网站公司网络公司的推广
  • 手机网站搜索框代码建站
  • 青岛开发区做网站线上推广的公司
  • 电子商务网站建设与管理的实验报告什么是推广
  • 天元建设集团有限公司总裁赵纪峰百度seo排名优化费用
  • 网站上海公安局备案怎么做专业搜索引擎优化电话
  • 导航类网站怎么做排名小说网站排名前十
  • 做电影网站用什么软件叫什么名字吗百度建站平台官网
  • 什么网站有做qq群排名的有哪些网站可以免费推广
  • 北京公司网站建站友情链接怎么购买
  • 外贸销售管理制度优化教程
  • 阿里云手机做网站百度移动开放平台
  • 贵阳网站制作免费品牌维护
  • 餐饮网站网页设计代码微信推广平台哪里找
  • 南通网站制作计划舆情监测系统
  • 网站制作 知乎seo挖关键词
  • 兰州论坛网站建设建立网站的基本步骤
  • 家居网站建设定位分析论文网店怎么推广和宣传
  • 外贸商城源码青岛官网seo公司
  • 网站备案 广东品牌推广和品牌营销
  • 开源大模型如何选择?GPT-OSS综合评估
  • FPGA实现Aurora 64B66B图像视频点对点传输,基于GTH高速收发器,提供2套工程源码和技术支持
  • ​​pytest+yaml+allure接口自动化测试框架
  • Redis-缓存-击穿-分布式锁
  • 应急响应常见命令
  • 部署tomcat应用时注意事项