На строке input() выдаёт ошибку неоднозначность вызова, как можно решить?Нужно сделать 8 выводов через 3 функции
#include <iostream>
#include <cstring>
using namespace std;
struct tractorDriver{
char name[20];
int startYear;
float GPA;
};
tractorDriver *students;
tractorDriver input(char* name=(char*)"Ivanov", int
startYear = 1, float GPA =4);
tractorDriver input(int startYear = 1, float GPA =
4);
tractorDriver input(float GPA = 4, char* name
(char*)"Ivanov");
void output();
int main() {
students = new tractorDriver;
input((char*)"Ivanov", 1, 4);//1
input((char*)"Ivanov", 1);//1
input(4.0f, (char*)"Ivanov");//3
input(1, 4.0f);//2
input((char*)"Ivanov");//1
input(1);//2
input( 4.0f);//3
input();
return 0;
}
void output(){
cout<<"Name:"<<students->name<<" ";
cout<<"Year"<<students->startYear<<" ";
cout<<"GPA"<<students->GPA<<endl;
}
tractorDriver input(char *name, int startYear,
float GPA) {
strcpy(students->name, name);
students->startYear=startYear;
students->GPA=GPA;
output();
cout<<"1";
}
tractorDriver input( int startYear, float GPA) {
strcpy(students->name,"Ivanov");
students->startYear=startYear;
students->GPA=GPA;
output();
cout<<"2";
}
tractorDriver input(float GPA, char *name) {
strcpy(students->name, name);
students->startYear=1;
students->GPA=GPA;
output();
cout<<"3";
}
Ответы (1 шт):
Автор решения: DmitryK
→ Ссылка
Поскольку у вас во всех функциях заданы значения по-умолчанию для всех параметров, то компилятор не может найти сигнатуру для вызова input(); - для нее подходят все обозначенные сигнатуры. Либо уберите пустой вызов, либо уберите в двух из трёх сигнатур значение по-умолчанию для первого параметра:
// либо так
tractorDriver input(char* name=(char*)"Ivanov", int startYear = 1, float GPA =4);
tractorDriver input(int startYear, float GPA = 4);
tractorDriver input(float GPA, char* name = (char*)"Ivanov");
// либо так
int main() {
students = new tractorDriver;
...
//input(); // либо так
return 0;
}
И если вы работаете с глобальным объектом tractorDriver *students, то не надо у функций писать возвращаемое значение tractorDriver, ещё и как копию. Сделайте void input(...)