我在sfml和box2d编码平台游戏,我想编写一些我可以推动的盒子,但由于某种原因,body->SetUserData("box")
说它不能convert const char [4] to void *
。我正在学习一个教程。在教程中一切正常,但对我来说这个错误出现:
Error C2664 'void b2Body::SetUserData(void *)': cannot convert argument 1 from 'const char [4]' to 'void *'
教程:(用俄语)https://www.youtube.com/watch?v=-eJXg2tGcyM
盒子代码:
b2PolygonShape shape;
shape.SetAsBox(30 / SCALE, 30 / SCALE);
b2BodyDef bdef;
bdef.type = b2_dynamicBody;
bdef.position.Set(600 / SCALE, 100 / SCALE);
b2Body *body = World.CreateBody(&bdef);
body->CreateFixture(&shape, 2);
body->SetUserData("box");
该教程可能依赖于VS中的不符合行为,允许将字符串文字转换为非const限定的指向char
的指针。因此,您应该将代码修改为const-correct(推荐),或者使用/Zc:strictStrings-
compilation option(不推荐)启用旧的行为。