标头文件
class Universe
{
public:
Universe();
~Universe();
private:
ChunkManager chunkManager;
};
我想在不使用默认构造函数的情况下初始化chunkManger
。但是,我想要使用的构造函数需要一个对象。如何使chunkManager
对象在.cpp文件中使用正确的构造函数?所以我想要这样的东西:
Universe::Universe(){
world = new b2World(b2Vec2(0, 0));
world->SetAllowSleeping(false);
//I want something like this because the constructor I want takes a World object
chunkManager = new ChunkManager(world);
player = new Player(world);
}
答案 0 :(得分:0)
ChunkManager
是一个对象而非指针,因此chunkManager = new ChunkManager(world);
是错误的。
您可以将其保留为对象并按以下方式初始化:
Universe::Universe() : chunkManager(world)
{
但您还没有world
(除非您可以将其作为参数传递)。最简单的解决方案是使标题有一个指针:
private:
ChunkManager* chunkManager;
然后你的.cpp就可以了。
编辑:我假设肯尼·奥斯特拉姆在评论中得到的是,因为你已动态分配chunkManager
,所以你需要确保delete
在某些时候(可能是析构函数)避免内存泄漏。