我们拥有经过数十年开发的大型 C 代码库。代码的特点之一是对函数指针和伪继承的依赖很大。习语(如讨论 here )如下所示:
typedef struct twod_ {
double x, y;
} twod;
typedef struct threed_ {
twod super;
double z;
} threed;
threed *point_3d;
twod *point_2d = (twod *)point3d;
此时
point_2d->x
和 point_3d->x
是同一个内存块。我的问题是:
当然,“如果它没有坏,就不要修理它”这句格言值得牢记;然而,目前这并没有真正帮助我们,所以我们认为我们可能需要更深入地重构......
谢谢!
最佳答案
我会说这很好,当然它很容易混淆,因为它变得相当冗长。
对我来说,“C with classes”的旗舰开源实现可能是 GTK+ ,特别是 gobject 模块。