Helo堆叠人,我需要你帮助我做的工作。所以我必须.h文件第一个是课程,第二个是学生,我尝试创建函数调用getCourses但不幸的是它不太顺利。我的实现“课程**课程”不通过编译,我不知道为什么不。我会评价你是否可以帮助我理解我的错误并帮助我解决它们。
getCourse - 返回课程列表
我的课程.h文件
#ifndef _CORSE_H
#define _CORSE_H
#include <iostream>
#include "Student.h"
class Course
{
public:
void init(std::string getName, int test1, int test2, int exam);
std::string getName();
int* getGrades();
double getFinalGrade();
private:
std::string _name;
int _exam;
int _test1;
int _test2;
};
#endif
我的学生.h档案 -
#ifndef _STUDENT_H
#define _STUDENT_H
#include <iostream>
#include "Course.h"
class Student
{
public:
void init(std::string name, Course** courses, int crsCount);
std::string getName();
void setName(std::string name);
double getAvg();
int getCrsCount();
Course** getCourses();
private:
std::string _name;
Course** courses;
int _crsCount;
};
#endif
我的课程功能 -
Course** student::getCourses()
{
return(this->courses);
}
“Course ** getCourses();”初始化中的问题,这也适用于init函数和Course ** getCourses();功能。 错误C4430:缺少类型说明符 - 假定为int。注意:C ++不支持default-int
答案 0 :(得分:4)
你有一个循环依赖 - 每个标题试图包含另一个,你最终会在另一个之前定义一个类。这会产生错误,因为您必须在使用其名称之前声明类型。
Course
完全不依赖Student
,所以只需从该文件中删除#include
。
Student
的定义仅使用指向Course
的指针,因此它不需要完整定义。它只需要知道该类是否存在,因此您可以用声明替换#include
:
class Course;
还有几点:
<string>
,因为它们使用std::string
;但不是<iostream>
,因为他们不使用任何I / O流; _CORSE_H
)保留。你应该删除下划线。Student
。答案 1 :(得分:0)
除了Mike Seymour所写的课程功能外,还使用了小写学生
Course** student::getCourses()
虽然你用一个大写字母S宣布了这个类。但案件确实很重要。