我正在使用c ++和Irrlicht引擎为大学项目创建一个游戏,我遇到了一个问题。
我有一个名为World的类,它在地图中设置引擎并加载,Main类创建这个类的对象,构造函数被称为创建世界并设置引擎(这一切都很好) !)。
但是,现在我已经创建了一个将设置相机的Player类。我必须设置相机的代码 很好 如果它与World
在同一个类中:如果我在类{{1}中创建一个函数并且在构造函数中调用该函数,一切都很好。但是,每当我将此代码放入World
类,然后在Player
构造函数中创建Player的对象时,它就会导致类World
的构造函数的无限循环。 / p>
我不想把所有的功能都放在班级World
中,因为拆分它会更加整洁!
World.cpp& World.h = http://pastebin.com/qtTsGQAR
Player.cpp& World.h = http://pastebin.com/DR7aUiYf
答案 0 :(得分:0)
如果Player
继承自World
,那么要创建Player
,您必须创建World
,并创建Player
,这会创建一个World
Player
,等等无限期。
解决方案是World
没有继承{{1}}
什么甚至意味着什么玩家是一个世界?
它没有多大意义。
答案 1 :(得分:0)
您的Player类是World类的子类。
class Player: public World
{
public:
Player();
~Player();
private:
void setup_player();
};
通过创建Player类,可以调用World的构造函数。但是,您的World构造函数会创建一个Player类的实例:
World::World()
{
setup_engine();
//open up the file path
//std::fstream fin(file_path);
//std::string command;
//open up the world
std::cout << "* Constructing World" << std::endl;
//loading the first level scene
smgr->loadScene("..\\Assets\\firstLevel.irr");
std::cout << "** Constructing Complete" << std::endl;
Player playerone;
}
然后,调用World类的构造函数,依此类推。