在.cpp文件中定义一个对象

Define an object in a .cpp file

本文关键字:定义 一个对象 文件 cpp      更新时间:2023-10-16

头文件

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);
}

头中的ChunkManager是对象而不是指针,所以chunkManager = new ChunkManager(world);是错误的。

你可以把它作为一个对象,并像这样初始化:

Universe::Universe() : chunkManager(world)
{

但是您还没有world(除非您可以将其作为参数传递)。最简单的解决方案是使标头具有指针:

private:
        ChunkManager* chunkManager;

然后你的.cpp就可以了。

编辑:我认为Kenny Ostram在评论中的意思是,由于您已经动态分配了chunkManager,您需要确保在某个时刻(可能是析构函数)delete,以避免内存泄漏。