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. }

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

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

    参考来自:https://stackoverflow.com/questions/1109061/insert-on-duplicate-update-in-postgresql/1109198#11 ...

  2. sql语句-------重复时插入更新

    ON DUPLICATE KEY UPDATE重复时插入更新 insert into user(id,username) value('231',"二人") on duplicat ...

  3. 【记录】VS2012新建MVC3/MVC4项目时,报:此模板尝试加载组件程序集“NuGet.VisualStudio.Interop...”

    最近电脑装了 VisualStudio "14" CTP,由于把其他版本的 VS 卸掉,由高到低版本安装,当时安装完 VisualStudio "14" CTP ...

  4. 单片机usb转串口的时灵时不灵的解答

    写这篇博客,首先检讨一下自己,因为以前串口的程序,也和步进电机一样,时灵时不灵,我现在终于知道这是为什么了,因为51上有三个串口,一个公口,一个母口,一个usb转串口,这样的话,串口有3个了,我手头上 ...

  5. c#中运行时编译时 多态

    c#中运行时编译时 多态   public class aa { } public class bb:aa { } public class cc { public static void Main( ...

  6. [转]关于oracle sql语句查询时表名和字段名要加双引号的问题

    oracle初学者一般会遇到这个问题.   用navicat可视化创建了表,可是就是不能查到!   后来发现②语句可以查询到 ①select * from user; 但是,我们如果给user加上双引 ...

  7. 解决eclipse部署maven时,src/main/resources里面配置文件加载不到webapp下classes路径下的问题

    解决eclipse部署maven时,src/main/resources里面配置文件加载不到webapp下classes路径下的问题. 有时候是src/main/resources下面的,有时候是sr ...

  8. 如何解决zabbix snmp异常超时、不稳定、时通时断:Timeout

    针对平时工作中,zabbix snmp出现异常超时.不稳定.时通时断:Timeout while connecting 等的情况,以下我将以使用乐维监控为例,进行解决方案的详细叙述.   一.问题:设 ...

  9. webdriver定位页面元素时使用set_page_load_time()和JavaScript停止页面加载

    webdriver定位页面元素时使用set_page_load_time()和JavaScript停止页面加载 原文:https://my.oschina.net/u/2344787/blog/400 ...

随机推荐

  1. Eclipse3.6 添加JUnit源代码

    Eclipse中无法查看JUnit源代码,也无法设置源代码的jar. 解决方法: 1.  下载org.junit.source_4.8.1.v4_8_1_v20100427-1100.jar,放到ec ...

  2. UVa 121 - Pipe Fitters

    称号:放置在一个圆中的矩形,它要求每个圆的每行或列是切线,问:多少能竖起来. 分析:计算几何.数论.首先计算矩形显示屏,然后计算互显示器(每一行与相邻行相同差1个月)求最大,你可以. 说明:╮(╯▽╰ ...

  3. [产值分析]生产部KPI考核之产值分析

    接到新任务:设计统计电子和磁电公司生产部产值分析报表. 眼下状况: 1.电子公司:取最新单位价格*入库数量 2.磁电公司:取最低价格*入库数量(实际取价的时候又没有取到最低价) 假设计算出来的结果和財 ...

  4. Ibatis的分页机制的缺陷

    我们知道,Ibatis为我们提供了可以直接实现分页的方法 queryForList(String statementName, Object parameterObject, int skipResu ...

  5. 分享非常有用的Java程序 (关键代码) (三)---创建ZIP和JAR文件

    原文:分享非常有用的Java程序 (关键代码) (三)---创建ZIP和JAR文件 import java.util.zip.*; import java.io.*; public class Zip ...

  6. 物理Data Guard主备切换步骤

    物理Data Guard角色转换步骤   Step  1   验证主库是否能执行角色转换到备库(原主库执行) SQL> SELECT SWITCHOVER_STATUS FROM V$DATAB ...

  7. java.lang.NoClassDefFoundError: org/apache/lucene/analysis/synonym/SynonymFilter

    2013-6-24 13:28:51 org.apache.solr.common.SolrException log 严重: java.lang.NoClassDefFoundError: org/ ...

  8. GoldenGate配置(二)之双向复制配置

     GoldenGate配置(二)之双向复制配置 环境: Item Source System Target System Platform Red Hat Enterprise Linux Serve ...

  9. apache一键安装脚本

    近期在玩apache,首先安装apace要配置apr.apr-util,pcre,而配置这些基本都是千篇一律.所谓程序猿的精神就是降低反复性的劳动,以下请看我写的apache安装脚本: 这个脚本我也放 ...

  10. Eclipse用法和技巧二十三:查看JDK源码

    使用java开发,如果能阅读JDK的经典代码,对自己的水平提高是很有帮助的.笔者在实际工作中总结了两种阅读JDK源码的方式.第一种下载android源代码,直接在android源码代码中,这里的代码虽 ...