C++ int* 到 int 的转换无效
C++ invalid conversion int* to int
我正在做一个任务,要求创建一些函数来分别读取数据、计算分数和输出数据。
我觉得我已经非常接近完成此操作,但不断遇到以下错误:
66 [错误] 从
int (*)(studentType*, int)
到int
的转换无效 [-允许]30 [错误] 初始化
void printResults(std::ofstream&, studentType*, int, int)
的参数 3 [-允许]
我搜索了stackoverflow和其他论坛,但无法完全了解它。有谁知道我的代码中可能导致这些错误的原因?
我也偷偷怀疑我传递价值观的方式并不完全正确。我知道这是一个开放式问题,但任何反馈将不胜感激。
这是代码:
#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
using namespace std;
//sets limit for students
const int max_students = 20;
//student info struct
struct studentType
{
string firstName;
string lastName;
int score;
char grade;
};
//function declarations
void dataInput(ifstream& inFile, studentType slist[], int listSize);
void calcGrade(studentType sList[], int listSize);
void printResults(ofstream& outFile, studentType sList[], int highScore, int listSize);
int highScore(studentType sList[], int listSize);
int main()
{
ifstream inFile;
ofstream outFile;
int listSize = max_students;
studentType sList[max_students];
//checks for input file
inFile.open("scores.txt");
if (!inFile)
{
cout << "No input file detected.. please try again." << endl;
return 0;
}
//checks for output file
outFile.open("results.txt");
if (!outFile)
{
cout << "Cannot locate output file.. please try again" << endl;
return 0;
}
//calls functions
dataInput(inFile, sList, listSize);
calcGrade(sList, listSize);
printResults(outFile, sList, highScore, listSize);
return 0;
}
//function to collect names and scores from each student
void dataInput(ifstream& inFile, studentType sList[], int listSize)
{
for(int i = 0; i < listSize; i++)
{
inFile >> sList[i].firstName >> sList[i].lastName >> sList[i].score;
}
}
//calculates grades based on input scores
void calcGrade(studentType sList[], int score, int listSize)
{
for(int i = 0; i < listSize; i++)
{
if (score >= 90)
sList[i].score = 'A';
else if (score >= 80)
sList[i].score = 'B';
else if (score >= 70)
sList[i].score = 'C';
else if (score >= 60)
sList[i].score = 'D';
else
sList[i].score = 'F';
}
}
//calculates highest score(s)
int highScore(studentType sList[], int listSize)
{
int i = 0;
int highScore = sList[i].score;
for(i; i < listSize; i++)
{
if(sList[i].score > highScore)
{
highScore = sList[i].score;
}
}
return highScore;
}
//prints results into output file
void printResults(ofstream& outFile, studentType sList[], int highScore, int listSize)
{
int topScore = highScore;
int i = 0;
//header
outFile << setw(10) << "Name " << setw(10) << "Score " << setw(10) << "Grade " << endl;
for (int i = 0; i < listSize; i++)
{
//content
outFile << left << setw(25) << sList[i].lastName << ", " << sList[i].firstName <<
right << " " << setw(5) << sList[i].score << setw(5) << " " << sList[i].grade << endl;
outFile << " " << endl;
outFile << "Highest test score: " << topScore << endl;
outFile << "Students with the highest score: " << endl;
for(int i = 0; i < listSize; i++)
{
if (sList[i].score == topScore)
{
outFile << sList[i].lastName << ", " << sList[i].firstName << endl;
}
}
}
}
两个主要问题:
-
您定义了
void calcGrade(studentType sList[], int listSize);
但随后将其实现为void calcGrade(studentType sList[], int score, int listSize)
-
在 Main 中,您使用的是未定义的变量
highScore
,只定义了具有此类名称的函数,这就是为什么您会收到指向函数的指针无法转换为 int 的奇怪错误
的原因
问题就在这里:
int main()
...
printResults(outFile, sList, highScore, listSize);
return 0;
}
您放置的第三个参数highScore
但它是您声明的函数!!它应该是一个int
数字。
相关文章:
- 是否可以从int转换为enum类类型
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- 是什么导致了这种使用三进制而不是短整型的有符号int到无符号int转换
- 将字符串中的 int 转换为字母;
- 主.cpp:18:20:错误:从"int*"转换为"int"会失去精度 [-fa
- 将非常大的 int 转换为双倍,在某些计算机上会损失精度
- 如何将矢量<int>转换为字符数组?
- C++ 无法从 const int* 转换为 const_iterator
- 我不断收到错误 C2440'=':无法从"int *(__cdecl *)(int *,int *,int,int)"转换为"int *
- 如何将 int[4] 转换为 std::array<int,4>?
- 如何将data[i].int转换为vaible
- 将 int 转换为字符串,然后连接另一个变量以创建完整扩展名,然后将其转换为 const_char*
- 将私有矩阵形式 int 转换为双 C++
- 无法将参数 1 从 'int' 转换为 'int &'
- 将 int 转换为字符串后始终得到 0
- isspace 函数的性能警告,从 int 转换为布尔值
- 将大 int 转换为浮点数,而不舍入 c++
- 错误:无法将'uint8* {aka unsigned int*}'转换为"常量emxArray_uint8_T*"?
- 将未签名的INT转换为BCD
- 在 C++ 中将 int 转换为双精度