可能重复:
C++: malloc : error: invalid conversion from ‘void*’ to ‘uint8_t*’
您好,
我有这个小功能
Uint32 moveSprite(Uint32 interval, void *param)
{
SDL_Rect* spritePos = param;
spritePos->x++;
return interval;
}
这里的问题非常简单,我正在使用代码块,当我将此文件保存为C文件时,它编译没有问题,但是一旦我将其保存为C ++文件,我就会出现此错误:
error: invalid conversion from 'void*' to 'SDL_Rect*'|
有没有人知道这里的问题是什么?
答案 0 :(得分:4)
您需要将无类型指针强制转换为类型。例如:
SDL_Rect* spritePos = static_cast<SDL_Rect*>(param);
阅读C ++中的强制转换。
答案 1 :(得分:4)
您的代码是有效的C,而不是有效的C ++。您需要为其编译显式转换
C风格:
SDL_Rect* spritePos = (SDL_Rect *)param;
或更多C ++ - ish:
SDL_Rect* spritePos = static_cast<SDL_Rect *>(param);
更好的解决方案是改变参数类型,如果可能的话。尽可能避免使用void *
!