我如何使用box2d使用std :: shared_ptr?

时间:2014-08-30 20:43:05

标签: c++ box2d shared-ptr

如何在box2d世界中使用shared_ptr?我试过了:

struct B2DWorld
{
    std::shared_ptr<b2World> world;

    void init()
    {
        b2Vec2 gravity(0.0f, -10.0f);
        world(gravity);
    }
};

但它给了我错误:无法调用'(std :: shared_ptr)(b2Vec2&amp;)'世界(重力);

1 个答案:

答案 0 :(得分:1)

使用make_shared

void init()
{
    b2Vec2 gravity(0.0f, -10.0f);
    world = std::make_shared<b2World>(gravity);
}

或更紧凑:

    world = std::make_shared<b2World>(b2Vec2(0.0f, -10.0f));

您可以使用new b2Vec2(...)代替make_shared,但这会对shared_ptr控件结构造成额外的分配惩罚。