我有一个函数声明为:
void foo(unsigned int x)
我如何检查 foo() 没有收到负数? 我希望如果我调用 foo(-1) 会抛出异常, 但当然,因为 x 会自动转换为无符号,所以我无法检查它的正性,例如:
if not(x>=0){ do_something();};
或类似的检查。
最佳答案
确实没有什么好的方法可以做到这一点,但是你可以通过一些技巧来做到这一点:
1) 声明一个未定义的更好匹配:
void foo(unsigned int x) {
//do something
}
void foo(int x);
2) 使用typeid判断类型。
关于C++如何检查函数是否正在接收无符号整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12443690/