编译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*'|
有谁知道这里的问题是什么吗?
Possible Duplicate:
C++: malloc : error: invalid conversion from ‘void*’ to ‘uint8_t*’
Hello,
I have this little function
Uint32 moveSprite(Uint32 interval, void *param)
{
SDL_Rect* spritePos = param;
spritePos->x++;
return interval;
}
The problem here is quite simple, I'm using codeblocks, when i save this file as a C file, it compiles with no problems, but once I save it as a C++ file, I have this error:
error: invalid conversion from 'void*' to 'SDL_Rect*'|
Does anyone have a clue on what's the problem here?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您的代码是有效的 C,而不是有效的 C++。您需要添加显式转换来编译
它 C 风格:
或更 C++ 风格:
更好的解决方案是更改参数类型(如果您可能的话)。尽可能避免
void *
!Your code is valid C, not valid C++. You need to add an explicit casting for it to compile
Either C-style:
Or more C++-ish:
A better solution would be to change the parameter type instead if that's possible for you. Avoid
void *
whenever you can!您需要将无类型指针转换为类型。例如:
阅读 C++ 中的转换。
You need to cast the typeless pointer to a type. For example:
Read up on casting in C++.