gpt4 book ai didi

c - C 中的方法查找

转载 作者:行者123 更新时间:2023-11-30 20:11:50 25 4
gpt4 key购买 nike

我正在尝试使用 OOP 用 C 语言制作游戏。我遇到了能够在父类(super class)中查找方法的问题。

目前,我的对象看起来或多或少像这样:

typedef unsigned int PTR

struct Object{
PTR super;
PTR (method1 (PTR self, ...));
.
.
.
PTR (methodN (PTR self, ...));
}

我想查找一个方法,如果在对象中找不到它,则迭代地在它的 super 、它的 super 的 super 等中查找它,如果在某个时刻 super == NULL 则返回 0(未找到方法)。

我怎样才能实现这个目标?

最佳答案

您可以用一个简单的循环来实现它:

typedef PTR (*MPTR)();

MPTR lookup_method1(struct Object obj) {
MPTR res;
do {
res = obj->method1;
obj = obj->super;
} while (!res && obj);
return res;
}

循环沿着继承层次结构的链接向上移动,直到找到适当的方法。

但是,你的方法相当慢。您应该预先遍历您的层次结构,并将所有 NULL 设置为来自父级的指针。这样你就可以快速查找;如果指针为NULL,则没有实现。

关于c - C 中的方法查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38928456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com