更新:好的,谢谢大家!我的教科书说函数原型需要在括号中声明函数,并且所示的示例与函数头和函数体中的代码本身略有不同,所以..我接受了它向我展示的内容。我纠正了它,建议将原型的括号留空并且有效。
为了记录,我真的很讨厌这些教科书...再次感谢你们的帮助!
OP: 我收到此错误:
C2660' getLetter':函数不带0个参数。
代码是这样的:
#include <iomanip>
#include <iostream>
#include <cmath>
using namespace std;
char getLetter(char letter);
int main()
{
char firstLetter = getLetter();
cout << firstLetter;
return 0;
} //end of main function
char getLetter()
{
char letter = ' ';
cout << "Enter a character: ";
cin >> letter;
return letter;
} // end of getLetter function
我的代码看起来像书中给出的示例,但没有一个示例使用&#34; char&#34;函数,它们都使用double或int;不确定是否重要。错误(在第12行,主函数的底部)也是我的教师编写的代码,而不是我,这让我更加困惑。我在掌握这一课时遇到了麻烦,需要第二个观点。
答案 0 :(得分:1)
在以下代码段中调用该函数之前
int main()
{
char firstLetter = getLetter();
^^^^^^^^^^
//...
您将名称getLetter
声明为具有一个参数
char getLetter(char letter);
^^^^^^^^^^^
int main()
//...
编译器没有看到你在main之后放置的另一个函数声明。
char getLetter()
{
char letter = ' ';
cout << "Enter a character: ";
cin >> letter;
return letter;
} // end of getLetter function
因此编译器会发出错误。
很明显,你不会超载这个功能并输入错字。在main之前删除函数声明中的参数声明。
答案 1 :(得分:0)
您的函数声明语句接受char
:
char getLetter(char letter);
如果您想要更改它以便它不再需要char作为参数,只需使用:
char getLetter();
<强>为什么:强>
您的功能签名必须与您的功能定义和函数调用相同。
答案 2 :(得分:0)
函数声明与函数定义不匹配。