Указатели на виртуальные функции

Тема в разделе "LANGS.C", создана пользователем Rustem, 30 ноя 2007.

  1. Rustem

    Rustem New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2004
    Сообщения:
    429
    Адрес:
    Russia
    Приветствую!

    Пишу враппер для директХ. Как правильно получить указатель на метод?

    Код типа этого не компилится:
    typedef HRESULT (__stdcall IDirect3D9:: *LPFNDLLFUNC2 )
    (UINT, D3DDEVTYPE, HWND, DWORD, D3DPRESENT_PARAMETERS *, IDirect3DDevice9 **);

    IDirect3D9 * pd3d9 = Direct3DCreate9(SDKVER);

    LPFNDLLFUNC2 true_CreateDevice=(LPFNDLLFUNC2)pid3d9->CreateDevice; //Здесь ошибка
    'IDirect3D9::CreateDevice' : forming a pointer-to-member requires explicit use of the address-of operator ('&') and a qualified name
     
  2. reverser

    reverser New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    615
    Вроде так.
    Код (Text):
    1. LPFNDLLFUNC2 true_CreateDevice = &IDirect3D9::CreateDevice;
     
  3. Rustem

    Rustem New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2004
    Сообщения:
    429
    Адрес:
    Russia
    так нельзя, т.к. не участвует pd3d9.

    Похоже придется считывать адрес из p3d98, по смещению функциии