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

时间:2015-07-02 04:03:44

标签: c++

标头文件

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

1 个答案:

答案 0 :(得分:0)

标题中的

ChunkManager是一个对象而非指针,因此chunkManager = new ChunkManager(world);是错误的。

您可以将其保留为对象并按以下方式初始化:

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

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

private:
        ChunkManager* chunkManager;

然后你的.cpp就可以了。

编辑:我假设肯尼·奥斯特拉姆在评论中得到的是,因为你已动态分配chunkManager,所以你需要确保delete在某些时候(可能是析构函数)避免内存泄漏。