|
发表于 2023-6-10 00:07:39
|
显示全部楼层
根据您提供的代码,您的重载函数声明和定义是正确的。然而,编译器报错说在main函数中调用该函数时缺少参数。这是因为您重载的函数需要在调用时告诉编译器使用哪个函数,但在case 1和case 2中只使用了一个或两个参数来调用函数,而没有告诉编译器应该使用哪个函数。
为解决此问题,您可以在case 1和case 2中使用具有相同名称的不同函数,例如:
- double calc(double a1);
- double calc(double a1, double a2);
- double calc(double a1, double a2, double a3);
- double calc(double a1)
- {
- return pow(a1, 2);
- }
- double calc(double a1, double a2)
- {
- return a1 * a2;
- }
- double calc(double a1, double a2, double a3)
- {
- return a1 + a2 + a3;
- }
- int main(int argc, const char *argv[], const char *envp[])
- {
- double a1, a2, a3;
- int judge;
- double answer;
- std::cout << "请问要输入几个数? " << std::endl;
- std::cin >> judge;
- switch(judge)
- {
- case 1:
- {
- std::cin >> a1;
- answer = calc(a1);
- break;
- }
- case 2:
- {
- std::cin >> a1 >> a2;
- answer = calc(a1, a2);
- break;
- }
- case 3:
- {
- std::cin >> a1 >> a2 >> a3;
- answer = calc(a1, a2, a3);
- break;
- }
- default :
- {
- std::cout << "输入错误, 请重试! " << std::endl;
- break;
- }
- }
- std::cout << "计算后的值为: " << answer << std::endl;
- system("pause");
- return 0;
- }
复制代码
这样可以确保具有正确参数数量和类型的函数被调用。 |
|