c++ 类名和enum时重复时要在类名前加class::

一些不好的习惯都是用小写,但又没有区分开token,看看代码再说,下面的代码是我在测试polymorphism时写的一部分,怎么也查不出,最后主意到下面红色标志出来的语句,他们(animal)重复了,要区分开来。

重复名的有很多情况,以后遇见再在一起总结,先记录下来。

  1. #include <iostream>
  2. #include <cstring>
  3. #include <string>
  4. using namespace std;
  5. enum zoo_obj_kind{
  6. null = 0,
  7. #define zk_null (zoo_obj_kind(null))
  8. no = 0,
  9. #define zk_no (zoo_obj_kind(no))
  10. animal = 1,
  11. #define zk_animal (zoo_obj_kind(animal))
  12. plant = 2,
  13. #define zk_plant (zoo_obj_kind(plant))
  14. others = 3,
  15. #define zk_others (zoo_obj_kind(others))
  16. max = 4
  17. #define zk_max 4
  18. };
  19. static const char * zoo_kind_str [zk_max ] ={
  20. "null",
  21. "animal",
  22. "plant",
  23. "others"
  24. };
  25. class obj{
  26. private:
  27. char name [40];
  28. // void *other_msg;
  29. public:
  30. obj() {
  31. strcpy(name,"null") ;
  32. }
  33. obj(char *nm){
  34. strncpy(name,!nm?"null":nm,sizeof(name));
  35. }
  36. void say(){
  37. cout << "name:" << name << endl;
  38. }
  39. void say(obj *obj){
  40. !obj
  41. ? cout << "null\n"
  42. : cout << "name:" << obj->name << endl;
  43. }
  44. };
  45. class zoo_obj{
  46. private:
  47. zoo_obj_kind z_kind;
  48. char name [40];
  49. void *other_msg;
  50. public:
  51. zoo_obj() {
  52. z_kind = null;
  53. strcpy(name,"null") ;
  54. }
  55. zoo_obj(char *nm, zoo_obj_kind k){
  56. strncpy(name,!nm?"null":nm,sizeof(name));
  57. z_kind = k;
  58. }
  59. void say(){
  60. cout << "name:" << name << ",kind:"
  61. << zoo_kind_str[(int) z_kind] << endl;
  62. }
  63. void say(zoo_obj *obj){
  64. !obj
  65. ? cout << "null\n"
  66. : cout << "name:" << obj->name << endl;
  67. }
  68. };
  69. class animal:public obj{
  70. private:
  71. int lags;
  72. public:
  73. animal(char *nm, int l) :lags(l), obj(nm){ }
  74. void say(){
  75. obj::say();
  76. cout << "lag:" << lags << endl;
  77. }
  78. };
  79. int main(void){
  80. zoo_obj obj = zoo_obj( "cat", zoo_obj_kind(animal));
  81. obj.say();
  82. class::animal dog ("joel‘s dog",4);
  83. dog.say();
  84. }
时间: 2024-10-14 18:36:40

c++ 类名和enum时重复时要在类名前加class::的相关文章

SQL多个主键的表,插入数据有重复时,查询数据的重复值?

SQL多个主键的表,插入数据有重复时,会提示违反主键约束不能插入的错误.那么,如何找到插入数据的重复值? 解决方法:使用group by 假设有个表#a,有saleid,vendorid,comid,price,saleprice,quantity等字段. 主键是:saleid,vendorid,comid三个.假设插入#a的数据源可能会有重复的. 即:saleid,vendorid,comid三个字段都一样的字段,那么插入#a的时候会报主键冲突,违反主键约束. 如果想找出#a表中插入重复的值可

2017.7.7 postgreSQL在插入造成重复时执行更新

参考来自:https://stackoverflow.com/questions/1109061/insert-on-duplicate-update-in-postgresql/1109198#1109198 功能需求:接口定义中包含字段update,当它为true时,批量插入中有记录造成唯一键重复时,不报异常,而是执行更新. 1.接口定义 1 { 2 "resources": 3 [ 4 { 5 "name":"*", 6 "dis

SVN使用svn+ssh协议连接服务器时重复提示输入密码 解决办法

TortoiseSVN使用svn+ssh协议连接服务器时重复提示输入密码 当使用svn+ssh协议连接svn服务器时,ssh会提示请求认证,由于不是svn客户端程序来完成ssh的认证,所以不会缓存密码. 而svn客户端通常会建立多个版本库的连接,当密码没有缓存的时候,就会重复不断的提示输入密码. 解决办法是在TortoiseSVN的网络设置里指定SSH客户端使用TortoisePlink.exe并增加-pw password参数和-l username参数. 最终的命令行如下: “C:Progr

【转载】Git push时重复输入用户名密码的问题

在windows上使用git来push到github服务器的时候,每次都需要填写用户名/邮箱.密码,很麻烦.最近用hexo写博客,需要频繁地进行博客配置和预览,而每次预览执行hexo deploy都需要输入用户名.密码验证,不胜其烦,今天下决心解决. 尽管github提供了SSH方式进行本地和服务端的链接,可是按照网站说明设置好之后,这个问题仍然得不到解决.尝试了好几次,最终用下面这个方法解决了. 首先添加环境变量. 在用户文件夹如C:\Users\zhangsan下新建一个名为_netrc的文

页面加载时让其显示笼罩层与加载等待图片

页面加载时让其显示笼罩层与加载等待图片(结局比较完美,过程很坎坷,所以一定总结整理下,备用): 用了ajax异步,是因为js内容不能即时的显示出来,因为js是单线程,要把队列中的任务执行完后才会执行刚才对js的处理 要用beforeSend,complete的时候必须要用ajax异步 beforeSend: function () {},//程序一开始便会执行该函数,使用该方法必须使用异步ajax complete: function () {},//complete在success或error

打开网页时快时慢

lnmp架构,发现同一个网页打开时快时慢,上下行流量极小,测试中,查看nginx错误日志,发现这么一句“ PHP message: PHP Warning:  file_get_contents(http://url/index.php?url=yoururl/kjtest): failed to open stream: php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution in /

如何解决存储过程中关联临时表时快时慢的情况

调用一个存储过程,同样的条件,数据库负载也是正常的情况下,时快时慢.原因是数据库无法获取临时表的统计信息,导致执行计划会走错.之前写过一个帖子,被临时表坑了,http://blog.csdn.net/stevendbaguo/article/details/39964807,就是用hint/*+ dynamic_sampling(T 10) */来做动态采集,这种解决方案实践证明还是没有很好的解决问题,出现时快时慢的几率只是小了一点. 最优的解决方案是什么呢? 一般我们会选择事务型的临时表,如果

硬盘故障时无法时无法关机,内核直接重启

硬盘故障时无法时无法关机,内核直接重启 如果硬盘可能会出现锁死或坏道的故障,会造成SHELL命令的失效,包括reboot,powoff, shutdown, 用正常的命令是没法完成重启的现象如下 # rebootbash: /sbin/reboot: Input/output error# shurdown -r nowbash: /sbin/shutdown: Input/output error 很明显,因为硬盘的故障,内核无法从磁盘上读取二进制程序 /sbin/reboot 和 /sbin

vos忙时闲时费率不一样怎么设置

问题: 现有一客户要求上午闲时由原来的9:00追加到9:30 即: 9:30--12:00为忙时 14:00--18:00为忙时 其他为闲时 忙时费率为0.04元即4分 闲时费率为0.025元即2分5 具体案例: