编译cpp文件时出错

Error when compiling cpp file

本文关键字:出错 文件 cpp 编译      更新时间:2023-10-16

可能重复:
C++:malloc:错误:从"void*"到"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*'|

有人知道这里出了什么问题吗?

您的代码是有效的C,而不是有效的C++。你需要为它添加一个显式的强制转换来编译

任一C样式:

SDL_Rect* spritePos = (SDL_Rect *)param; 

或更多C++风格:

SDL_Rect* spritePos = static_cast<SDL_Rect *>(param); 

如果可能的话,更好的解决方案是更改参数类型。尽可能避免void *

您需要将无类型指针强制转换为一个类型。例如:

SDL_Rect* spritePos = static_cast<SDL_Rect*>(param); 

阅读C++中的铸造。