我真的不确定为什么我收到这个错误。我试图谷歌它但我没有得到最好的结果...如果有人可以告诉我为什么我收到这个错误:
No viable conversion from 'vector<Country>' to 'int'
int main()
{
vector<Country> readCountryInfo(const string& filename);
// Creating empty vector
vector<Country> myVector;
// Opening file
ifstream in;
in.open("worldpop.txt");
if (in.fail()) {
throw invalid_argument("invalid file name");
}
while (in) {
char buffer; // Character buffer
int num; // Integer to hold population
string countryName; // Add character buffer to create name
while (in.get(buffer)) {
// Check if buffer is a digit
if (isdigit(buffer)) {
in.unget();
in >> num;
}
// Check if buffer is an alphabetical character
else if (isalpha(buffer) || (buffer == ' ' && isalpha(in.peek()))) {
countryName += buffer;
}
// Checking for punctuation to print
else if (ispunct(buffer)) {
countryName += buffer;
}
// Check for new line or end of file
else if (buffer == '\n' || in.eof()) {
// Break so it doesn't grab next char from inFile when running loop
break;
}
}
Country newCountry = {countryName, num};
myVector.push_back(newCountry);
}
return myVector;
}
答案 0 :(得分:5)
它在这里说
int main()
main
会返回int
- 因为标准需要它。
然后,最后,你说
return myVector;
且myVector
为vector<Country>
,无法转换为int
。
因此错误信息。
我怀疑,基于声明
vector<Country> readCountryInfo(const string& filename);
返回vector<Country>
的函数的,您打算在名为&#34; readCountryInfo&#34;的函数中编写代码,但不知何故碰巧写入了错误的地方。
答案 1 :(得分:1)
您的int main()
应该返回一个int,而不是myVector
(代码的最后一行)。
在c ++中,main返回一个int,通常为零。