gpt4 book ai didi

c++ - 枚举作为模板

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:22:13 25 4
gpt4 key购买 nike

这就是我想要做的:

enum MyEnum
{
ONE = 1, TWO, THREE
};

template<class T>
void func()
{
cout << T::TWO << endl;
}

int main()
{
func<MyEnum>();
};

它有效,但我收到警告:“警告 C4482:使用了非标准扩展:限定名称中使用了枚举‘MyEnum’”

如何在没有收到警告的情况下执行此操作

最佳答案

枚举在这里有点棘手。类型 ONE 和 TWO 将位于外部命名空间中。因此,将类型添加到名称会导致警告。您可以删除限定符

template<class T>
void func()
{
cout << TWO << endl;
}

因为这两个在外部命名空间中是已知的。您也可以将您的枚举移动到某种封闭结构。

struct EnumContainer
{
enum MyEnum
{
ONE = 1, TWO, THREE
};
};

template<class T>
void func()
{
std::cout << T::TWO << std::endl;
}

int main()
{
func<EnumContainer>();
};

现在编译器应该没问题了。

关于c++ - 枚举作为模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4958041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com