Questions tagged «ambiguous-call»

1
避免歧义匹配异常
我通过反射在类型上调用静态方法Parse,因为我在编译时不知道对象的类型(但是我知道,它有一个Parse方法,需要一个字符串)。 但是,我得到了一个模棱两可的match异常,大概是因为有很多重载的Parse方法,每个方法都带有一个对象(字符串,int,double等)。 如何在我的方法调用中更加具体,以确保到达正确的方法(Parse(string s))并且不引发异常。 我的代码如下所示: Type returnType = p.PropertyType; object value = returnType.GetMethod("Parse").Invoke(null, new string[] { "1" });

3
为什么最负的int值会导致有关歧义函数重载的错误?
我正在学习C ++中的函数重载,并遇到了以下问题: void display(int a) { cout << "int" << endl; } void display(unsigned a) { cout << "unsigned" << endl; } int main() { int i = -2147483648; cout << i << endl; //will display -2147483648 display(-2147483648); } 据我了解,该int范围内给出的任何值(在我的情况下int为4字节)都将被调用,display(int)而该范围外的任何值都将是模棱两可的(因为编译器无法确定要调用哪个函数)。int除最小值外,它对于整个值范围均有效,即-2147483648编译失败并显示错误 重载的呼叫display(long int)是模棱两可的 但是对取相同的值int并打印该值将给出2147483648。我真的对这种行为感到困惑。 为什么仅当传递最大负数时才会观察到此行为?(如果将a short与-32768-一起使用,其行为是相同的-实际上,在任何情况下,负数和正数具有相同的二进制表示形式) 使用的编译器:g ++(GCC)4.8.5
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.