【发布时间】:2015-12-10 16:06:57
【问题描述】:
我在尝试编译我的项目时不断收到此错误, 但我不知道为什么。 另外我得到了
“错误:‘CrewMember’尚未声明” 对于一个类方法,错误“expected ‘,’ or ‘...’ before ‘
我很确定问题出在正确的“包含”上,但我无法解决
这是我的代码:
#ifndef SMALLTOBIGIDSORTER_H_
#define SMALLTOBIGIDSORTER_H_
#include "CrewSorter.h"
#include "CrewMember.h"
//this is the line where i get the error
class SmallToBigIdSorter: public CrewSorter {
public:
SmallToBigIdSorter();
~SmallToBigIdSorter();
//this is where i'm getting the second error error: ‘CrewMember’ has not been declared
bool compare(CrewMember* member1, CrewMember* member2);
};
#endif /* SMALLTOBIGIDSORTER_H_ */
CrewSorter 类:
#ifndef CREWSORTER_H_
#define CREWSORTER_H_
#include "CrewMember.h"
#include <vector>
using namespace std;
class CrewSorter {
public:
CrewSorter();
virtual ~CrewSorter();
//expected ‘,’ or ‘...’ before ‘<’ token
void addCrewMember(vector<CrewMember*>* membersList, CrewMember* newMember);
void removeCrewMember(vector<CrewMember*>* membersList, int id);
void sortCrewList(vector<CrewMember*>* membersList);
virtual bool compare(CrewMember* member1, CrewMember* member2);
};
#endif /* CREWSORTER_H_ */
CrewMember 类:
#ifndef CREWMEMBER_H_
#define CREWMEMBER_H_
#include "Movie.h"
#include <iostream>
#include <string>
using namespace std;
class Movie;
class CrewMember {
protected:
string name;
int id;
int age;
char gender;
int moviesNumber;
vector<Movie*>* movies;
string jobDescription;
public:
/*
* the function will print a string representing the
* employee unique string
*/
virtual void print(std::ostream& str) const = 0;
friend ostream& operator<<(ostream& os, const CrewMember& crewMember);
/*
* the function will add the given movie
* to the crew member
*/
void addMovie(Movie* newMovie);
/*
* the function will remove the given movie
* from the crew member
*/
void removeMovie(string movieId);
vector<Movie*> copyMovieList();
bool movieExists(Movie* movie);
/*
* will print the movie list of the crew member
*/
void printMovies();
void printMember();
/*
* constructor
*/
CrewMember();
CrewMember(string name, int id ,int age, char gender,
vector<Movie*>* movies, string jobDescription);
void removeFromAllMovies();
/*
* destructor
*/
virtual ~CrewMember();
/*
* getters
*/
vector<Movie*>* getMovies() const;
int getMoviesNumber() const;
int getId() const;
int getAge() const;
string getName() const;
string getDescription() const;
};
#endif /* CREWMEMBER_H_ */
【问题讨论】:
-
我想
Movie.h包括CrewMember.h? -
离题但你永远不想在头文件中包含
using namespace std;。 -
我很确定您需要从 CrewMember.h 中删除
#include "Movie.h"作为清理循环包含问题的一部分。删除该包含可能产生的任何后果都可以通过某种方式处理,而不会造成循环问题。 -
@Ryan 尝试将
#include "Movie.h"移动到.cpp文件中。 -
是的,你们说得很清楚,从电影到剧组成员的循环定义,不是吗?
标签: c++ inheritance include