SFML и Box2D SetUserData не могут преобразовать аргумент из const char [4] в void * - PullRequest
0 голосов
/ 07 апреля 2019

Я кодирую платформер в 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"); 

1 Ответ

1 голос
/ 07 апреля 2019

Это руководство, вероятно, опиралось на неконформное поведение в VS, которое позволяло преобразовывать строковые литералы в неконстантный указатель на char.Поэтому вы должны либо изменить свой код, чтобы он соответствовал константе (рекомендуется), либо включить это старое поведение, используя /Zc:strictStrings- параметр компиляции (не рекомендуется).

...