2015-10-17 83 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

好吧有道理。谢谢你给我正确的方向。 –

相关问题