可能重复:
何时使用前向声明?
我正在使用 Kubuntu 和 Eclipse。
我有这两个类:
学生.h
#ifndef STUDENT_H_
#define STUDENT_H_
#include <iostream>
#include <string>
#include <vector>
#include "Course.h"
using namespace std;
class Student {
public:
Student(vector<string> &vec);
virtual void study(Course &c)=0;
virtual ~Student();
private:
string _studentId;
string _department;
string _pathToImage;
};
#endif /* STUDENT_H_ */
课程.h
#ifndef COURSE_H_
#define COURSE_H_
#include <iostream>
#include <vector>
#include <string>
#include <stdio.h>
#include <stdlib.h>
#include "Student.h"
using namespace std;
class Course {
public:
Course(vector<string> &vec);
virtual void teach();
virtual void reg(Student &s)=0;
virtual ~Course();
private:
string _department;
string _name;
int _semester;
int _minimumGrade;
};
#endif /* COURSE_H_ */
我在编译时遇到了这个错误:
Description Resource Path Location Type
‘Course’ has not been declared Student.h /hw2/include line 22 C/C++ Problem
我还有一些继承这些类的类。我不认为这是问题所在。
可能是什么问题?
谢谢
编辑:
在对您的答案进行一些编辑后,这是我现在的文件:
课程.h
#ifndef COURSE_H_
#define COURSE_H_
#include <iostream>
#include <vector>
#include <string>
#include <stdio.h>
#include <stdlib.h>
class Student;
using namespace std;
class Course {
public:
Course(vector<string> &vec);
virtual void teach();
virtual void reg(Student &s)=0;
virtual ~Course();
private:
string _department;
string _name;
int _semester;
int _minimumGrade;
};
#endif /* COURSE_H_ */
学生.h
#ifndef STUDENT_H_
#define STUDENT_H_
#include <iostream>
#include <string>
#include <vector>
class Course;
using namespace std;
class Student {
public:
Student(vector<string> &vec);
virtual void study(Course &c)=0;
virtual ~Student();
private:
string _studentId;
string _department;
string _pathToImage;
};
#endif /* STUDENT_H_ */
课程.cpp
#include "../include/Course.h"
#include "../include/Student.h"
Course::Course(vector<string> &vec): _department(""), _name(""), _semester(0), _minimumGrade(0) {
_department = vec[0];
_name = vec[1];
_semester = atoi(vec[2].c_str());
_minimumGrade = atoi(vec[3].c_str());
}
Course::~Course() {
// TODO Auto-generated destructor stub
}
学生.cpp
#include "../include/Course.h"
#include "../include/Student.h"
Student::Student(vector<string> &vec): _studentId(""), _department(""), _pathToImage("") {
_studentId = vec[0];
_department = vec[1];
_pathToImage = vec[2];
}
Student::~Student() {
// TODO Auto-generated destructor stub
}
现在它给了我很多这样的错误:
Description Resource Path Location Type
required from ‘static void __gnu_cxx::__alloc_traits<_Alloc>::construct(_Alloc&, __gnu_cxx::__alloc_traits<_Alloc>::pointer, const _Tp&) [with _Tp = Student; _Alloc = std::allocator<Student>; __gnu_cxx::__alloc_traits<_Alloc>::pointer = Student*]’ hw2 line 202, external location: /usr/include/c++/4.7/ext/alloc_traits.h C/C++ Problem
required from ‘static void __gnu_cxx::__alloc_traits<_Alloc>::construct(_Alloc&, __gnu_cxx::__alloc_traits<_Alloc>::pointer, const _Tp&) [with _Tp = Course; _Alloc = std::allocator<Course>; __gnu_cxx::__alloc_traits<_Alloc>::pointer = Course*]’ hw2 line 202, external location: /usr/include/c++/4.7/ext/alloc_traits.h C/C++ Problem
required from ‘void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = Course; _Alloc = std::allocator<Course>; std::vector<_Tp, _Alloc>::value_type = Course]’ hw2 line 885, external location: /usr/include/c++/4.7/bits/stl_vector.h C/C++ Problem
required from ‘void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = Course; _Alloc = std::allocator<Course>; std::vector<_Tp, _Alloc>::value_type = Course]’ hw2 line 893, external location: /usr/include/c++/4.7/bits/stl_vector.h C/C++ Problem
required from ‘void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = Student; _Alloc = std::allocator<Student>; std::vector<_Tp, _Alloc>::value_type = Student]’ hw2 line 885, external location: /usr/include/c++/4.7/bits/stl_vector.h C/C++ Problem
required from ‘void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = Student; _Alloc = std::allocator<Student>; std::vector<_Tp, _Alloc>::value_type = Student]’ hw2 line 893, external location: /usr/include/c++/4.7/bits/stl_vector.h C/C++ Problem