尝试定义一个函数,但我得到了"variable or field `function_A' declared void"

Trying to define a function, but I get "variable or field `function_A' declared void"

本文关键字:function field or variable declared void 定义 一个 函数      更新时间:2023-10-16
#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 行(返回类型中不能定义新类型。

您的部分问题是您在定义类型Student之前使用它,将其作为参数来function_A。 要完成这项工作,您需要

  1. 添加前向声明function_A
  2. 切换function_A以获取指针或引用
  3. Student后移动function_A。 这是必需的,以便在访问之前定义成员courses
  4. class Student定义结束后添加;

尝试以下操作

class Student;
void function_A(Student& s);
class Student { 
   // All of the student code
};
void function_A(Student& s) {
  s.courses = 1;
}

你必须转发声明Student

地方

 class Student;

function_A之前.