我很困惑我爲一門課程學習的項目。 我必須建立一個樹型表達式,我知道算法是如何工作的,但是我在設置節點時遇到了困難。樹表達式 - 節點設置
指導員給了我們這個類:表達式節點 它有2個其他的子類:常量節點和操作符節點?
和在「表達式樹類」中:我在哪裏構建樹表達式?我有這種類型的堆棧:表達式節點
我的問題是:在我分配一個運算符或一個常量後,我如何將它推到堆棧,因爲類型是不同的。
我正在與C++ 謝謝。
我很困惑我爲一門課程學習的項目。 我必須建立一個樹型表達式,我知道算法是如何工作的,但是我在設置節點時遇到了困難。樹表達式 - 節點設置
指導員給了我們這個類:表達式節點 它有2個其他的子類:常量節點和操作符節點?
和在「表達式樹類」中:我在哪裏構建樹表達式?我有這種類型的堆棧:表達式節點
我的問題是:在我分配一個運算符或一個常量後,我如何將它推到堆棧,因爲類型是不同的。
我正在與C++ 謝謝。
應用多態:將指針(或引用)推送到您的節點。 由於您的堆棧包含「ExpressionNode」類型的元素,因此它可以接受從它派生的所有類型(常量和運算符)。
如果您有權訪問boost,boost :: variant就是您要查找的內容。 請參閱this,它是工會的OO版本。
頭文件
#include <boost/variant.hpp>
stack<boost::variant<int,char>> s;
s.push('+');
s.push(1);
的感謝!有道理知道:) – Makaveli