我正在编写一个程序,它使用堆栈将后缀算术表达式转换为中缀算法表达式。用户输入是一个字符串,它被拆分为一个数组(将空格视为分隔符)。然后"+"
,"-"
,"*"
和"/"
的case语句区分运算符和操作数(即如果它不是那些符号之一,则它是一个操作数;所以类型转换为整数)。
我想知道是否可以创建类似于enum
的内容,其中可接受的类型是整数,或符号+
,-
,*
和/
?
答案 0 :(得分:3)
这是std::variant
或其doppelgängerboost::variant
的一个很好的用例。
enum class Operator : char {
plus = '+',
minus = '-',
multiply = '*',
divide = '/'
};
// Now a token can contain either an integer or an operator.
using Token = std::variant<int, Operator>;
答案 1 :(得分:0)
是否可以创建类似于枚举的内容,其中可接受的类型是整数
没有
enum
内部是C ++基本类型的值。你不能在那里有整数和符号,除非你保留一些解释为那些符号的数字。
其他替代方案
当然:联盟或结构可以解决这个问题。