zoukankan      html  css  js  c++  java
  • c++ 类名和enum时重复时要在类名前加class::

     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 "
    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 "
    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. }
  • 相关阅读:
    @hdu
    @51nod
    @51nod
    @51nod
    JS-正则表达式常规运用
    CSS-复选框默认样式修改
    Vue-路由传参query与params
    Vue-阻止页面回退
    Vue-表单提交
    JS-原生的ajax
  • 原文地址:https://www.cnblogs.com/timssd/p/4781106.html
Copyright © 2011-2022 走看看