Tag: polymorphism

C中的OO多态性,混叠问题?

我和一位同事正试图实现一个简单的多态类层次结构。 我们正在研究嵌入式系统,仅限于使用C编译器。 我们有一个基本的设计思想,在没有警告的情况下编译(-Wall -Wextra -fstrict-aliasing -pedantic),并且在gcc 4.8.1下运行正常。 但是,我们有点担心别名问题,因为我们还不完全了解何时出现问题。 为了演示我们已经编写了一个带有“接口”IHello的玩具示例和两个实现此接口“Cat”和“Dog”的类。 #include /* ——– IHello ——– */ struct IHello_; typedef struct IHello_ { void (*SayHello)(const struct IHello_* self, const char* greeting); } IHello; /* Helper function */ void SayHello(const IHello* self, const char* greeting) { self->SayHello(self, greeting); } /* ——– Cat ——– */ typedef struct Cat_ { […]

C联合和多态

可能重复: 如何在C中模拟OO风格的多态? 我正在尝试使用联合在C中创建多态性。我执行以下操作。 typedef struct{ … … } A; typedef struct{ … … } B; typedef union{ A a; B b; }C; 我的问题是:我怎么能有一个类型为C的方法,但也允许A和B. 我希望以下工作: 如果我定义一个函数: myMethod(C){ … } 那么,我希望这个工作: main(){ A myA; myMethod(myA); } 它没有。 有什么建议?