如何在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;)'世界(重力);
答案 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
控件结构造成额外的分配惩罚。