2015-04-27 2 views
-1

Посмотрите на простой код ниже:Integer в SDL_JoystickName в C++

int main() 
{ 
    int a; 
    a = SDL_Init(SDL_INIT_JOYSTICK); 
    a = SDL_NumJoysticks(); 
    for (int i=0; i<a; i++) 
     cout << SDL_JoystickName(i); 
    return 0; 
} 

Я использую библиотеку SDL, Кажется, что нет ничего плохого с кодом, я пытаюсь получить имена подключенных джойстиков но это дает мне ошибку ниже:

error C2664: 'SDL_JoystickName' : cannot convert parameter 1 from 'int' to 'SDL_Joystick *' 
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast 

Где это проблема?

+4

Первая проблема должна быть довольно очевидна из ошибки. Вторая проблема заключается в том, что вы не читаете [документацию] (http://wiki.libsdl.org/FrontPage), где вы бы легко нашли ['SDL_JoystickNameForIndex'] (http://wiki.libsdl.org/SDL_JoystickNameForIndex?highlight =% 28 \ bCategoryAPI \ b% 29 |% 28SDLFunctionTemplate% 29), которые * делают * принимают индекс, в отличие от ['SDL_JoystickName'] (http: //wiki.libsdl.org/SDL_JoystickName? Highlight =% 28 \ bCategoryAPI \ b% 29 |% 28SDLFunctionTemplate% 29), который * не *. –

+1

Я читал неправильную документацию: http://www.libsdl.org/release/SDL-1.2.15/docs/html/sdljoystickname.html – Nofuzy

ответ

3

В документации говорится, что SDL_JoystickName принимает SDL_Joystick * в качестве параметра (компилятор говорит то же самое) Вы можете получить SDL_Joystick * через SDL_JoystickOpen который принимает в качестве параметра Int.

см https://wiki.libsdl.org/SDL_JoystickName

EDIT: Как сказал Йоахим Pileborg, если вы просто хотите, чтобы получить имена, SDL_JoystickNameForIndex это путь