我不知道为什么这不起作用。我不知道它是否与通过函数或我创建变量的方式有关。但是我必须使用toDigit
功能来完成我的作业。
#include <iostream>
#include <fstream>
using namespace std;
int toDigit(char &);
int main(){
int number;
char isbn;
ifstream inputFile;
inputFile.open("numbers.txt");
while (inputFile >> isbn) {
number = toDigit(isbn);
cout << number << endl;
}
inputFile.close();
return 0;
}
int toDigit(char ch){
return ch - '0';
}
答案 0 :(得分:1)
最初,您声明toDigit为
int toDigit(char &);
将被读取为:一个函数返回一个int,它将一个参数一个引用带到一个char。
然后,您将在以后定义此函数:
int toDigit(char ch){
return ch - '0';
}
可以像这样读取:一个函数返回一个带有一个char参数的int。
你看到了区别吗?提示:参考。
在c ++中,定义需要与声明相同,因此您需要使它们相同。
或者:
发表声明
int toDigit(char );
// ^^ no &
OR
制定定义
int toDigit(char & ch){
// ^^ & added
return ch - '0';
}
在这种情况下,第一个选项更有意义,因为你不需要读取访问权限,字符和字符复制效率很高,所以副本就可以了。