可能重复:
Object oriented programming in C
Can you write object oriented code in C?
您好
我知道有一些模仿面向对象编程的纯C的编码样式:“对象”(struct).c和.h组织的“方法调用”(函数),依此类推......
你对此有什么习惯?
是否有一些很好的教程?还是例子?
答案 0 :(得分:4)
你应该明确地看看GTK+ Project 使用事件,窗口小部件的层次结构,通过大量代码,您将获得关于C中的OO如何看起来的良好印象。 甚至有一个很好的实现反射(其他编程框架,如Java或.NET或多或少内置)称为“内省”。
Gtk +绝对是C语言中面向对象编程的一个很好的例子。
答案 1 :(得分:0)
一种常见的方法是设计一个前向声明结构的头文件,然后定义一些函数,这些函数将指向该结构的指针作为“this”指针。例如:
struct vector; // Forward-declaration; no implementation shown.
struct vector* VectorNew(/* ... */);
void VectorAppend(struct vector* this, void* toAppend);
size_t VectorSize(const struct vector* this);
然后,在.c文件中,您实际上可以提供完整的结构定义和相关的函数定义。这可以防止客户端读取原始字段,因为它们只在.c文件中,并通过使用一致的前缀为“成员函数”提供一种“命名空间”。