我对我为一门课程学习的项目感到困惑。 我必须构建一个树表达式,我知道算法是如何工作的,但我在设置节点时遇到了困难。
教师给了我们这个类:Expression Node 它有2个其他子类:常量节点和操作员节点?
并在“表达式树类”中:我在哪里构建树表达式?我有一个这种类型的堆栈:表达式节点
我的问题是:在我分配一个运算符或一个常量之后,我怎么能把它推到堆栈,因为类型不同。
我正在使用C ++ 谢谢。
答案 0 :(得分:1)
应用多态:将指针(或引用)推送到节点。 由于您的堆栈包含“ExpressionNode”类型的元素,因此它可以接受从它派生的所有类型(常量和运算符)。
答案 1 :(得分:0)
如果您有权访问boost,那么boost :: variant就是您的目标。 参见this,它是工会的OO版本。
头文件
#include <boost/variant.hpp>
stack<boost::variant<int,char>> s;
s.push('+');
s.push(1);