如何转换变量成员以将其作为函数的引用参数传递

时间:2015-03-10 03:46:52

标签: c++

当我尝试使用VC ++ 2015编译一些非常类似的代码时,我得到了一个:

C2664无法将参数编号1从'unsigned int'转换为'short&'

class Foo
{
public:
    unsigned int A;
    unsigned int B;
}

void foo(short& a)
{
    a++;
}

void main()
{
    Foo f;
    foo(f.A);
}

投射它的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

使用强制转换无法执行此操作,因为unsigned int不能别名为short。要在不更改的情况下调用此foo,代码将为:

if ( f.A > SHRT_MAX )
    throw std::runtime_error("existing value out of range for short");

short sh = f.A;
foo(sh);
f.A = sh;

您可能需要先检查sh >= 0,然后再将其重新分配给f.A;并且foo应该防止整数溢出。