为了我的一生,我无法弄清楚如何通过引用将b2Body(Box2d对象)传递给方法并为其分配值。

void GameContactListener::GetContactInfo(b2Body &hero, b2Body &ground, b2Body &enemy) {
    b2Body *b1 = thing1->GetBody();
    b2Body *b2 = thing2->GetBody();

    // EXC_BAD_ACCESS HERE
    hero = *b1;
    ground = *b2;
}

// elsewhere
b2Body *hero = NULL;
b2Body *ground = NULL;

GetContactInfo(*hero, *ground);


我可以通过引用传递给简单的int类型,但是似乎缺少指针。

编辑,添加方法声明:

void GetContactInfo(b2Body& hero,  b2Body& ground, b2Body& enemy);

最佳答案

假设thing->GetBody()返回一个b2Body*,则

void GameContactListener::GetContactInfo(b2Body*& hero, b2Body*& ground) {
    hero = thing->GetBody();
    ground = thing->GetBody();
}

// elsewhere
b2Body* hero = NULL;
b2Body* ground = NULL;

GetContactInfo(hero, ground);


请注意,heroground都将指向相同的b2Body对象。

关于c++ - C++初学者:通过引用将b2Body的指针传递给函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14463472/

10-11 16:45