2014-08-30 2 views
0

어떻게 box2d 세계에 shared_ptr을 사용합니까? 나는 시도 :어떻게하면 box2d에서 std :: shared_ptr을 사용할 수 있습니까?

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

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

그러나 그것은 나에게 오류를 포기하지 : 일치를 호출에 '(표준 : : shared_ptr의) (b2Vec2 &)'세계 (중력)에 대한;

+0

'void init()'대신'B2DWorld()'를 사용하면'B2DWorld'의 객체가 생성 될 때 자동으로 호출 될 것입니다. – GingerPlusPlus

+0

오류 : 예상 ';' 'w'전에 세계 w = std :: make_shared (중력); – user1953923

+0

init() 또는 B2DWorld()를 사용하는 것은 내 문제와 관련이 없습니다 ... – user1953923

답변

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

대신 make_sharednew b2Vec2(...)을 사용할 수 있지만,이 shared_ptr 제어 구조에 대한 추가 할당 벌금을 부과한다.

+0

감사합니다 :) – user1953923

+0

사이트에 오신 것을 환영합니다.이 사이트를 사용하는 방법에 대해 더 자세히 알고 싶다면 [둘러보기 링크] (http://stackoverflow.com/tour)를 참조하십시오. – jxh

관련 문제