#include <cstdio>
#include <cstdlib>
#include <iostream>
using namespace std;
class Student;
void function_A(Student& s)
class Student {
void function_B() {
::function_A(*this);
}
int courses;
};
void function_A(Student& s)
{ // line 18 (where error is occurring)
s.courses = 1;
}
int main()
{
Student s;
s.function_B();
return 0;
}
我得到的错误如下:
(第18行)可能无法在返回类型中定义新类型。
答案 0 :(得分:6)
问题的一部分是你在定义之前使用类型Student
,使其成为function_A
的参数。为了完成这项工作,你需要
function_A
function_A
以获取指针或参考function_A
之后移动Student
。这是必要的,因此成员courses
在被访问之前就已定义;
定义class Student
醇>
尝试以下
class Student;
void function_A(Student& s);
class Student {
// All of the student code
};
void function_A(Student& s) {
s.courses = 1;
}
答案 1 :(得分:2)
您必须转发声明Student
。
放置
class Student;
在function_A
之前。