runtime-error – 使用b2FixtureDef的box2d CreateFixture提供纯虚函数调用

runtime-error – 使用b2FixtureDef的box2d CreateFixture提供纯虚函数调用,第1张

概述我有这个代码,在行中给我运行时错误: body->CreateFixture(&boxDef) 我在windows中使用cocos2d-x 2.1.5和box2d 2.2.1 CCSprite *sprite = CCSprite::create(imageName.c_str()); this->addChild(sprite,1); b2BodyDef bodyDef; 我有这个代码,在行中给我运行时错误:

body->CreateFixture(&BoxDef)

我在windows中使用cocos2d-x 2.1.5和Box2d 2.2.1

CCSprite *sprite = CCSprite::create(imagename.c_str());    this->addChild(sprite,1);    b2BodyDef bodyDef;    bodyDef.type = isstatic?b2_staticBody:b2_dynamicBody;    bodyDef.position.Set((position.x+sprite->getContentSize().wIDth/2.0f)/PTM_RATIO,(position.y+sprite->getContentSize().height/2.0f)/PTM_RATIO);    bodyDef.angle = CC_degrees_TO_radians(rotation);    bodyDef.userData = sprite;    b2Body *body = world->CreateBody(&bodyDef);    b2FixtureDef BoxDef;    if (isCircle)    {        b2CircleShape circle;        circle.m_radius = sprite->getContentSize().wIDth/2.0f/PTM_RATIO;        BoxDef.shape = &circle;    }    else    {        b2polygonShape Box;        Box.SetAsBox(sprite->getContentSize().wIDth/2.0f/PTM_RATIO,sprite->getContentSize().height/2.0f/PTM_RATIO);        BoxDef.shape = &Box;    }    if (isEnemy)    {        BoxDef.userData = (voID*)1;        enemIEs->insert(body);    }    BoxDef.density = 0.5f;    body->CreateFixture(&BoxDef)  //<-- HERE IS THE RUN TIME ERROR

;

当我调试Box2d代码即时到达b2Fixture.cpp
在方法中:

voID b2Fixture::Create(b2BlockAllocator* allocator,b2Body* body,const b2FixtureDef* def)

在线:

m_shape = def->shape->Clone(allocator);

得到运行时错误:

R6025 pure virtual function call

解决方法 棘手的一个.我自己碰到了几次.它与变量范围有关.

BoxDef.shape是问题所在.您可以在if / else块中将形状创建为局部变量,然后将它们分配给BoxDef.一旦执行离开if / else块作用域,那么这些局部变量将是垃圾. BoxDef.shape现在指向释放的内存.

解决方案是通过在if / else块之前移动圆形和框形状声明来保持形状变量的范围.

总结

以上是内存溢出为你收集整理的runtime-error – 使用b2FixtureDef的box2d CreateFixture提供虚函数调用全部内容,希望文章能够帮你解决runtime-error – 使用b2FixtureDef的box2d CreateFixture提供纯虚函数调用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/999993.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存