2011-05-31 94 views
1

Possible Duplicate:
C++: malloc : error: invalid conversion from ‘void*’ to ‘uint8_t*’错误编译CPP文件时

你好,

我这个小功能

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

编写多语言源文件对大脑不利。请自行承担风险:) – pmg 2011-05-31 13:53:30

+0

@pmg:你知道ObjectiveC++吗? :) – jv42 2011-05-31 13:56:01

+0

@ jv42:哈哈,没有。混合'C'和'预处理器''语言“对我来说已经绰绰有余了 – pmg 2011-05-31 14:05:23

回答

4

您的代码有效C,无效的C++。您需要添加一个明确的铸件它来编译

无论是C-风格:

SDL_Rect* spritePos = (SDL_Rect *)param; 

或多个C++ - ISH:

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

一个更好的解决办法是改变参数类型相反,如果这是可能的你。尽可能避免void *

+0

@Bo Persson:感谢编辑! – jv42 2011-05-31 13:55:35

4

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

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

阅读关于在C++中的转换。