我之前的帖子已被标记为重复 - https://stackoverflow.com/questions/36960042/lots-of-unreasonable-compiler-errors-c
我尝试了建议的解决方案。 但是当向前声明“class course;”时,我的编译器似乎没有识别前面文件中的类,说在“student.cpp”中提到的每个地方的课程(类)都是不完整的类型。
我是否错过了这一点?如何解决代码中的循环依赖? (上一篇文章中的代码)。
“course”在student.cpp中被标记为不完整
“student.h” -
#define _CRT_SECURE_NO_WARNINGS
#pragma once
#include <string>
#include <iostream>
#include <stdlib.h>
using namespace std;
class course;
class student{
private:
string name;
int id;
string gender;
int age;
public:
int amountofcourses;
student();
~student();
course **courses;
};
“student.cpp” -
#include "student.h"
student::student(){
courses = NULL;
course *courses = new course;
}
“course.h” -
#include "student.h"
#pragma once
class course{
private:
string name;
int num;
int amountofstudents;
public:
course();
~course();
答案 0 :(得分:1)
只需从student.h中删除#include "course.h"
,您不需要它,它会导致循环依赖,并将其添加到student.cpp,您实际需要它。
编辑:请注意,此答案是在编辑发布的代码之前编写的,以匹配我建议的一半。