我在构造函数中使用什么类型来初始化由无名枚举定义的成员变量?

What type do I use in the constructor to initialize a member variable defined by a nameless enum?

我有一个包含成员变量 category 的结构,我猜它是“无名枚举”类型。

struct Token {
    Token();
    enum {
            NUMBER, VARIABLE, PLUS, MINUS, PRODUCT, DIVISION, POWER, SIN, COS
    } category;
    union { 
        char variable;
        double number;
    };
};

如您所见,我还有一个构造函数Token()。我希望能够像这样使用构造函数:

Token my_token(Token::NUMBER, 5);

而不是做这样的事情:

Token my_token;
my_token.category = Token::NUMBER;
my_token.number = 5;

我现在的问题是,构造函数使用什么类型?我试过这样的事情:

//declaration
Token(int category, int number);

//definition
Token(int category, int number) : category(category), number(number) {}

但是当我尝试初始化 Token 结构的对象时,我得到:
error: invalid conversion from ‘int’ to ‘Token::<unnamed enum>’ [-fpermissive]

我想将枚举保留在结构中,如果能提供一些关于使用什么类型来初始化联合的帮助,我们将不胜感激。

是这样的吗?

struct Token {
    enum EN {
            NUMBER, VARIABLE, PLUS, MINUS, PRODUCT, DIVISION, POWER, SIN, COS
    } category;
    union { 
        char variable;
        double number;
    };
    Token(const EN c, const double n) noexcept : category(c), number(n) {}
    //... Other constructors...
};

int main()
{
    Token t(Token::NUMBER, 3.4);
}

但我会在内部分配类别