c/c++语言开发共享C中的类(不是C ++)

我在一个西class牙语网站( http://trucosinformaticos.wordpress.com/2010/12/12/programacion-orientado-a-objetos-en-c/ )中发现了这个黑客攻击。

我想在C(而不是C ++)中创建一个“类”,但是当我编译时,我获得了下一个错误:

source.c(25): warning C4047: 'function' : 'Car' differs in levels of indirection from 'Car *' source.c(25): warning C4024: 'changeYears' : different types for formal and actual parameter 1 

这是我的代码:

 #include  typedef struct Car* Car; // class Car // { struct Car { int years; //char model[100]; }; void changeYears(Car this, int years) { this->years = years; } // } int main(void) { Car my_cars[10]; //nombrar(mis_alumnos[0], "Pepito"); changeYears(&my_cars[0], 6); // My car has now 6 years return 0; } 

    我同意@Oli Charlesworth的说法,将指针隐藏在typedef后面是一种让自己和他人混淆的简单方法。

    但是,要使代码编译和工作,您只需删除my_cars前面的&运算符my_cars 。 您还需要为这些指针分配内存。 我会说你之所以犯这个错误的原因是你把自己与指针隐藏混淆了。

     #include  typedef struct Car* Car; struct Car { int years; //char model[100]; }; void changeYears(Car this, int years) { this->years = years; } int main(void) { // An array of struct char* Car my_cars[10]; int i; for (i = 0; i < 10; i++) my_cars[i] = malloc(sizeof(struct Car)); changeYears(my_cars[0], 6); // My car has now 6 years return 0; } 

    这是一种更合理的方法来实现它而不隐藏指针。

     #include  typedef struct { int years; //char model[100]; } Car; void changeYears(Car* this, int years) { this->years = years; } int main(void) { Car my_cars[10]; changeYears(&my_cars[0], 6); // My car has now 6 years return 0; } 

    我认为这就是你要找的东西:

    (更清洁的实现,你想要的)

    码:

     #include  #include  #include  typedef struct { int years; } Car; void changeYears(Car *this, int years) { this->years = years; } int main(void) { Car *car = malloc(sizeof(Car)); changeYears(car, 2014); printf("car.years = %dn", car->years); free(car); return 0; } 

    OUTPUT:

     car.year = 2014 

      以上就是c/c++开发分享C中的类(不是C ++)相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注(计算机技术网)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请点击右边联系管理员删除。

      如若转载,请注明出处:https://www.ctvol.com/c-cdevelopment/522122.html

      (0)
      上一篇 2020年12月9日
      下一篇 2020年12月9日

      精彩推荐