标题可能不是很清楚,比这要复杂一些。我在网上搜索了类似我的问题的问题,但没有找到任何可以帮助我的东西。
这与无限循环包含无关,我已经放置了预处理器指令来避免这种情况。
我有两个类 Monster 和 Character,分别在自己的头文件monster.hpp和character.hpp中声明,并分别在自己的源文件monster.cpp和character.cpp中实现。
现在的问题是两个类都需要彼此工作。
怪物.hpp:
#ifndef INCLUDE_MONSTER_HPP
#define INCLUDE_MONSTER_HPP
#include "character.hpp"
class Monster
{
private: //Atributes
public: //Methods
void attackM(Monster& id);
void attackC(Character& id);
};
#endif //MONSTER_HPP_INCLUDED
字符.hpp:
#ifndef INCLUDE_CHARACTER_HPP
#define INCLUDE_CHARACTER_HPP
#include "monster.hpp"
class Character
{
private: //Attributes
public: //Methods
void attackM(Monster& id);
void attackC(Character& id);
};
#endif //CHARACTER_HPP_INCLUDED
和main.cpp:
#include <iostream>
#include "character.hpp"
#include "monster.hpp"
using namespace std;
int main(int argc, char **argv)
{
//Whatever
return 0;
}
我从编译器得到这个错误:
In file included from character.hpp:7:0,
from main.cpp:3:
monster.hpp:24:16: error: 'Character' has not been declared
void attackC(Character& id);
(行号和列号可能是错误的)据
我了解,当monster.hpp包含在character.hpp中时,编译器看到类Monster使用了类Character,而在monster.hpp中尚未声明该类。 hpp 包含在 character.hpp 中。
我不知道如何解决这个问题。
有任何想法吗 ?