相关疑难解决方法(0)

你能用C编写面向对象的代码吗?

你能用C编写面向对象的代码吗?特别是关于多态性.


另请参阅堆栈溢出问题C中的面向对象问题.

c oop object

481
推荐指数
19
解决办法
28万
查看次数

实验:面向对象的C?

可能重复:
你能用C编写面向对象的代码吗?

嗨!

只是为了它的乐趣,我在最后两天一直在尝试用纯C创建一个非常简单,非常直接的对象环境.我一直在玩着宏,动态链接,类型描述结构等,我到达了以下内容:

string_o str = new(String, "hello world");
list_o list = new(List);

List.pushf(list, str);

printf("In the list: \"%s\"\n",
       String.text(List.popf(list)));

delete(list);
delete(str);
Run Code Online (Sandbox Code Playgroud)

看起来和工作有点好,但我无法找到伪造实例方法的方法.我不能过去Class.function(instance),不能没有功能名称的全局宏替换,这会破坏封装的目的.

同样,这是一个实验,只是为了挑战和乐趣=).你能帮我找出办法吗?我不想使用额外的预处理,只需要使用普通的C和GCC宏.

编辑>忘了说 - 我不希望每个实例在其结构中包含函数指针.这会给我方法语法好,但这意味着一个4字节的数据对象会有十几个函数指针复制到每个实例.这有点像作弊= P哈哈

提前致谢!

c macros object

5
推荐指数
1
解决办法
1519
查看次数

如何在C中编写高级概念(即Object类和Generics)

最近,我一直在修补自己的语言,并阅读有关该主题的各种着作.

有没有人对C(或汇编程序)如何将概念Object Class和/或概念Generics编程成语言有任何好的建议.(指的是Object和Generics的Java实现)

例如,在Java中,所有类都扩展了Object.那么你如何在C级代表这一点呢?是这样的:

#include <stdio.h>

typedef struct {
  int stuff;
} Object;


typedef struct {
  int stuff;
  Object object;
} ChildClass;


int main() {
    ChildClass childClass;
    childClass.stuff = 100;
    childClass.object.stuff = 200;
    printf("%d\n", childClass.stuff);
    printf("%d\n", childClass.object.stuff);
}
Run Code Online (Sandbox Code Playgroud)

而且我甚至不确定如何开始实现像Generics这样的东西.我也很欣赏有关程序语言设计的任何有价值的链接.谢谢,

c assembly programming-languages

1
推荐指数
1
解决办法
419
查看次数

标签 统计

c ×3

object ×2

assembly ×1

macros ×1

oop ×1

programming-languages ×1