2015-10-17 86 views
0

有人可以幫助我如何創建一個處理不同類型的變量的堆棧。我有一個BNF語法,我需要推入堆棧及以下,我需要推入堆棧如何創建一個不同類型的變量的堆棧?

1)的事+, - ,/ *

2)的整數 - 0,1,2 ..9

3)角色 - 一,b..z,A,b..Z

4)$符號,括號(開,關),強調

我不知道,如果我的下面的嘗試將滿足以上所有。如果我錯了,請糾正我。

stack<int,string>mystack 
+1

你需要一個類可以容納任何這些類型作爲模板參數檢出boost :: variant.http://theboostcpplibraries.com/boost.variant – rakeshdn

+0

@rakeshdn謝謝你指點我正確的方向 –

回答

3

您需要使用多態性並將動態類型推送到您的堆棧。這可以是類似boost.variant或簡單的類層次結構的形式,並通過智能指針將項目存儲在堆棧中。這不是一個詳盡的清單。

C++不支持作爲核心語言項目的動態變量。您可以使用虛擬函數和繼承或類型擦除等技術來創建它們。

+0

好吧有道理。謝謝你給我正確的方向。 –

相關問題