0
有人可以帮助我如何创建一个处理不同类型的变量的堆栈。我有一个BNF语法,我需要推入堆栈及以下,我需要推入堆栈如何创建一个不同类型的变量的堆栈?
1)的事+, - ,/ *
2)的整数 - 0,1,2 ..9
3)角色 - 一,b..z,A,b..Z
4)$符号,括号(开,关),强调
我不知道,如果我的下面的尝试将满足以上所有。如果我错了,请纠正我。
stack<int,string>mystack
有人可以帮助我如何创建一个处理不同类型的变量的堆栈。我有一个BNF语法,我需要推入堆栈及以下,我需要推入堆栈如何创建一个不同类型的变量的堆栈?
1)的事+, - ,/ *
2)的整数 - 0,1,2 ..9
3)角色 - 一,b..z,A,b..Z
4)$符号,括号(开,关),强调
我不知道,如果我的下面的尝试将满足以上所有。如果我错了,请纠正我。
stack<int,string>mystack
您需要使用多态性并将动态类型推送到您的堆栈。这可以是类似boost.variant或简单的类层次结构的形式,并通过智能指针将项目存储在堆栈中。这不是一个详尽的清单。
C++不支持作为核心语言项目的动态变量。您可以使用虚拟函数和继承或类型擦除等技术来创建它们。
好吧有道理。谢谢你给我正确的方向。 –
你需要一个类可以容纳任何这些类型作为模板参数检出boost :: variant.http://theboostcpplibraries.com/boost.variant – rakeshdn
@rakeshdn谢谢你指点我正确的方向 –