Dlaczego ta przyczyna jest przyczyną błędu kompilatora, stwierdzając, że moje odwołania są niejednoznaczne? Mam float
, int
i string
, które powinny wszystkie tworzyć osobne sygnatury funkcji, prawda?Odniesienie do funkcji jest niejednoznaczne
Oto co mam do tej pory:
#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
W tym wywołaniu podwójne d = plus (3.2, 4.2); jakiej funkcji spodziewasz się wywoływać za pomocą floats lub ints? – Slava
Które linie powodują błąd? – Barmar
@Barmar On 'int n = plus (3, 4);' 'double d = plus (3.2, 4.2);' 'string s = plus (" he "," llo ");' i 'ciąg s3 = plus (s1, s2); 'wszystkie wywołania funkcji do plusa. – MarJamRob