我有以下代码:
typedef enum {Z,O,T} num;
bool toInt (str s,int& n);//<-if convert is possible converts s to integer ,puts the result in n and returns true,else returns false
我想使用toInt
函数并作为第二个参数传递,类型为num的参数
数字;
toInt( “2”,N);
这会导致编译错误。
cannot convert parameter 2 from 'num' to 'int &'
我尝试使用演员:toInt("2",(num)n);
但它仍然存在问题
我该如何解决这个问题?
答案 0 :(得分:1)
类型num
的值不是int
,因此在将其传递给函数之前必须将其转换为临时int
。 Tempories不能绑定到非const引用。
如果要通过int
转换,则必须分两步进行转换:
int temp;
toInt("2", temp);
num n = static_cast<num>(temp);
答案 1 :(得分:1)
我建议你添加一个新的枚举类型来表示无效的枚举,例如:
enum num {Z,O,T,Invalid=4711} ;//no need to use typedef in C++
并将签名更改为num而不是int:
bool toInt (str s, num& n)
{
if ( s=="Z" ) n=Z;
else if ( s=="O" ) n=O;
else if ( s=="T" ) n=T;
else { n=Invalid; return false; }
return true;
}
问候