Reference to function is ambiguous
本问题已经有最佳答案,请猛点这里访问。
为什么这会导致编译器错误,说明我的引用不明确? 我有一个
这是我到目前为止的内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #include <iostream> #include <string> using namespace std; int plus(int a, int b); float plus(float a, float b); string plus(string a, string b); int main(void) { int n = plus(3, 4); double d = plus(3.2, 4.2); string s = plus("he","llo"); string s1 ="aaa"; string s2 ="bbb"; string s3 = plus(s1, s2); } int plus(int a, int b) { return a+b; } // int version float plus(float a, float b) { return a+b; } // float version string plus(string a, string b) { return a+b; } // string version |
首先,不要使用
其次,您有一个歧义,因为
这是一种简化,但是在将数字传递给重载函数时,C ++基本上使用以下规则:
如果您在特定级别有多个候选人,那将是模棱两可。至关重要的是,
像这样调用float重载:
1 | double d = plus(3.2f, 4.2f); |
像3.2这样的常量实际上具有double类型。