2011-05-31 2 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; 
} 

Проблема здесь довольно проста, я использую CodeBlocks, когда я сохранить этот файл как C-файл, он компилируется без проблем, но как только я сохраню его как файл C++, у меня есть эта ошибка:

error: invalid conversion from 'void*' to 'SDL_Rect*'| 

Кто-нибудь знает, в чем проблема?

+2

Написание многоязычных исходных файлов плохо для мозга. Сделайте это на свой страх и риск :) – pmg

+0

@pmg: вы знаете ObjectiveC++? :) – jv42

+0

@ jv42: lol, no. Смешивание языка 'C' и' preprocessor' "более чем достаточно для меня – pmg

ответ

4

Ваш код действителен C, не является допустимым C++. Вам нужно добавить явное приведение для того, чтобы составить

Либо C-стиле:

SDL_Rect* spritePos = (SDL_Rect *)param; 

или более C++ - иш:

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

Лучшим решением было бы изменить тип параметра вместо этого, если это возможно для вас. Избегайте void * всякий раз, когда вы можете!

+0

@Bo Persson: спасибо за редактирование! – jv42

4

Вам нужно нарисовать беззнаковый указатель на тип. Например:

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

Читайте о литье в C++.

Смежные вопросы