gpt4 book ai didi

c++ - 将枚举转换为 int

转载 作者:可可西里 更新时间:2023-11-01 15:09:28 27 4
gpt4 key购买 nike

我对这段代码有疑问:

template <typename T>
void dosth(T& value,const T& default_value)
{
if (condition)
value = 10;
else
value = default_value;
}

当我调用它时

enum {
SITUATION1,
STIUATION2
};

int k;
dosth(k,SITUATION1);

编译器(g++ 4.5)说

no matching function for call to 'dosth(int&,)'

为什么编译器不自动将枚举转换为 int?

最佳答案

Your problem是因为无法从您提供的函数参数实例化模板。不会发生到 int 的隐式转换,因为根本没有可调用的函数

如果您进行强制转换而不是尝试依赖隐式转换,your program will work :

dosth(k, static_cast<int>(SITUATION1));

或者,如果您显式提供函数模板的参数,那么函数参数将按您的预期进行隐式转换,并且 your program will work :

dosth<int>(k, SITUATION1);

关于c++ - 将枚举转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7263672/

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