2011-05-31 90 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++中的轉換。