标题可能不是很清楚,它比这更复杂一点。我在网上搜索了类似于我的问题的东西,但是我没有找到任何可以帮助我的东西。
这不是关于无限循环包含,我已经把预处理器指令来避免这种情况。C++:包含在包含内
我有两个类怪物和角色,在自己的头文件分别宣布,monster.hpp和character.hpp,并在自己的源文件分别实施,monster.cpp和字符.cpp。
现在的问题是,两个类都需要彼此的工作。
monster.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
character.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;
}
而且我得到这个电子RROR从编译器:
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.hpp包含在character.hpp中时,它还没有被声明。
而我不知道如何解决这个问题。
任何想法?
哇,我没有想到,即使我已经使用它的功能。那么我现在感觉很蠢x)谢谢! – qreon