2016-07-18 56 views
0

我很困惑我爲一門課程學習的項目。 我必須建立一個樹型表達式,我知道算法是如何工作的,但是我在設置節點時遇到了困難。樹表達式 - 節點設置

指導員給了我們這個類:表達式節點 它有2個其他的子類:常量節點和操作符節點?

和在「表達式樹類」中:我在哪裏構建樹表達式?我有這種類型的堆棧:表達式節點

我的問題是:在我分配一個運算符或一個常量後,我如何將它推到堆棧,因爲類型是不同的。

我正在與C++ 謝謝。

回答

1

應用多態:將指針(或引用)推送到您的節點。 由於您的堆棧包含「ExpressionNode」類型的元素,因此它可以接受從它派生的所有類型(常量和運算符)。

+0

的感謝!有道理知道:) – Makaveli

0

如果您有權訪問boost,boost :: variant就是您要查找的內容。 請參閱this,它是工會的OO版本。

頭文件

#include <boost/variant.hpp> 

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