class DirectInput {
private:
  int private_member;
protected:
  void EnumJoystick();
  static BOOL CALLBACK EnumJoystickCallback(LPDIDEVICEINSTANCE lpddi, LPVOID pvRef);
};

void DirectInput::EnumJoystick() {
  if (FAILED(m_DI->EnumDevices(DI8DEVCLASS_GAMECTRL, (LPDIENUMDEVICESCALLBACK)EnumJoystickCallback, this, DIEDFL_ATTACHEDONLY))))
}

BOOL CALLBACK DirectInput::EnumJoystickCallback(LPDIDEVICEINSTANCE lpddi, LPVOID pvRef) {
  ((DirectInput *)pvRef)->private_member = 0;
  return DIENUM_STOP;
}