gpt4 book ai didi

c++ - 我应该如何根据 Liskov 原则实现树节点类?

转载 作者:太空狗 更新时间:2023-10-29 21:26:50 27 4
gpt4 key购买 nike

最近,我不得不为一个研究项目实现一个抽象查询树。基础对象是一个ASTNode,但实际的树节点是派生类:表达式节点、比较节点、操作数节点等。每种类型的节点都有自己的成员,例如操作数节点、参数列表等。

递归生成这棵树的解析函数需要返回 ASTNode 类型,因为它们只返回一个指针,而不管生成树的根节点是什么类型。

这意味着解析树的函数需要查询,对于树中的每个节点,在对其进行操作之前,它是什么类型。这可以通过动态转换或 typeid 来完成,但是 SO 和 Google 风格指南会因为我违反了 Liskov substitution principle 而生气。以及一般的所有运行类型检查。

我不能将对节点进行操作的函数放在节点子类本身中,因为树可以在应用程序的不同部分以多种不同方式使用。有没有更好的方法来构建我的树?

最佳答案

关于c++ - 我应该如何根据 Liskov 原则实现树节点类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10484093/

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