是否可以在C ++中创建int +枚举?

时间:2017-03-17 15:50:06

标签: c++ enums

我正在编写一个程序,它使用堆栈将后缀算术表达式转换为中缀算法表达式。用户输入是一个字符串,它被拆分为一个数组(将空格视为分隔符)。然后"+""-""*""/"的case语句区分运算符和操作数(即如果它不是那些符号之一,则它是一个操作数;所以类型转换为整数)。

我想知道是否可以创建类似于enum的内容,其中可接受的类型是整数,或符号+-*/

2 个答案:

答案 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 ++基本类型的值。你不能在那里有整数和符号,除非你保留一些解释为那些符号的数字。

  

其他替代方案

当然:联盟或结构可以解决这个问题。