树表达式 - 节点设置

tree expression - Node setting up

我对我为课程学习的项目感到困惑。 我必须构建一个树表达式,我知道算法是如何工作的,但是我在设置节点时遇到了困难。

老师给了我们这个class:表达式节点 它还有 2 个其他子classes:Constant Node 和 Operator Node?

并在 "Expression Tree class" 中:我在哪里构建树表达式?我有一个这种类型的堆栈:表达式节点

我的问题是:在我分配一个操作符或一个常量之后,我如何将它压入堆栈,因为类型不同。

我正在使用 C++ 谢谢。

应用多态性:将指针(或引用)推送到您的节点。 由于您的堆栈包含 "ExpressionNode" 类型的元素,它可以接受从它派生的所有类型(常量和运算符)。

如果您可以访问 boost,boost::variant 就是您要找的。 参见this,是union的OO版本。

头文件

#include <boost/variant.hpp>

stack<boost::variant<int,char>> s;
s.push('+');
s.push(1);