编译cpp文件时出错

时间:2011-05-31 12:50:45

标签: c++ c pointers sdl codeblocks

  

可能重复:
  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*'|

有没有人知道这里的问题是什么?

2 个答案:

答案 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 *