我尝试了几个不同的论坛,似乎不能得到一个直接的答案,我怎样才能使这个函数返回结构体?“我收到错误”不存在从studentType到studentType的合适的用户定义转换“。”
// Input function
studentType newStudent()
{
struct studentType
{
string studentID;
string firstName;
string lastName;
string subjectName;
string courseGrade;
int arrayMarks[4];
double avgMarks;
} newStudent;
cout << "\nPlease enter student information:\n";
cout << "\nFirst Name: ";
cin >> newStudent.firstName;
cout << "\nLast Name: ";
cin >> newStudent.lastName;
cout << "\nStudent ID: ";
cin >> newStudent.studentID;
cout << "\nSubject Name: ";
cin >> newStudent.subjectName;
for (int i = 0; i < NO_OF_TEST; i++)
{ cout << "\nTest " << i+1 << " mark: ";
cin >> newStudent.arrayMarks[i];
}
newStudent.avgMarks = calculate_avg(newStudent.arrayMarks,NO_OF_TEST );
newStudent.courseGrade = calculate_grade (newStudent.avgMarks);
}
5条答案
按热度按时间vxf3dgd41#
下面是您的代码的编辑版本,它基于ISO C++,并且可以很好地与G++配合使用:
mbskvtky2#
您有作用域问题。请在函数之前定义结构,而不是在函数内部。
dced5bon3#
现在你可以(C++14)返回一个本地定义的(即在函数内部定义的)结构体,如下所示:
tgabmvqs4#
将其移出函数:
uidvcgyl5#
正如其他人所指出的,在函数外部定义studentType。还有一件事,即使你这样做了,也不要在函数内部创建一个本地studentType示例。该示例位于函数堆栈上,当你试图返回它时将不可用。然而,你可以做的一件事是动态创建studentType,并在函数外部返回指向它的指针。