gpt4 book ai didi

c++ - 将枚举作为模板参数传递

转载 作者:行者123 更新时间:2023-11-27 23:04:02 25 4
gpt4 key购买 nike

为什么要用下面的模板函数

template<typename T>
bool isEqual(const T &v0, const T &v1)
{
return v0 == v1;
}

枚举v1和v2时不编译?我应该如何编写一个将变量与枚举进行比较的模板函数:isEqual(color, RED)

template<typename T>
bool isEqual(const T &v0, const T &v1)
{
return v0 == v1;
}


int main()
{
enum Enum
{
E1,
E2,
E3
} v1, v2;

v1 = E1;
v2 = E1;

isEqual(v1, v2);

}

TestProject/main.cpp:在函数“int main()”中:TestProject/main.cpp:31: 错误:没有匹配函数来调用 'isEqual(main()::Enum&, main()::Enum&)'

最佳答案

这可能意味着您的编译器已过时。

在 C++11 之前,没有链接的类型(例如在函数中声明的类型)不能用作模板参数。这个相当奇怪的限制现在已被删除。

如果您将 enum 声明移动到 namespace 范围(为其提供外部链接),或者使用现代编译器,您的示例应该可以编译:http://ideone.com/QZQjHI

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

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