访问用于创建模板化结构 C++ 的枚举类

问题描述 投票:0回答:1
template <typename FruitEnum>
struct FruitManager
{
    /* a variable named group */
};

enum class FirstFruitEnum
{
    apple_fruit,
    banana_fruit,
};

enum class SecondFruitEnum
{
    banana_fruit,
    grape_fruit,
};

int main()
{
    FruitManager<FirstFruitEnum> fruit_manager;
}

我正在尝试设置一些类似的东西

int index = static_cast<int>(fruit_manager.group::banana_fruit);

(相当于输出)

int index = static_cast<int>(FirstFruitEnum::banana_fruit);

对于上下文,可以使用任一枚举类创建结构。 如何最好地做到这一点?

编辑:我想知道结构体和 main 中的行需要做什么。

c++ templates enum-class
1个回答
0
投票

decltype
可用于获取
group
成员的类型,一旦获得类型,就可以访问枚举。

decltype(fruit_manager.group)

为您提供

group
的类型,然后

decltype(fruit_manager.group)::banana_fruit

是访问

group
具有的枚举类型的枚举成员的方式。

© www.soinside.com 2019 - 2024. All rights reserved.