Не могу определить “GestureID” в условии “if”

252
25 февраля 2017, 05:13
TListBox *setting = new TListBox (GridLayout1);
 setting->Items->LoadFromFile(GetHomePath()+"settings.txt");
if (EventInfo.GestureID == sgiLeft) {       //ошибка в этой строке
GridLayout3->Position->X=GridLayout3->Position->X-StrToInt(setting->ItemByIndex(0)->Text);
}
if (EventInfo.GestureID == sgiRight) {     //ошибка в этой строке
GridLayout3->Position->X=GridLayout3->Position->X+StrToInt(setting->ItemByIndex(0)->Text);
}

При компиляции под win64 все работает корректно. При компиляции под Android вылетает ошибка:

[bccaarm Error] TabbedTemplate.cpp(635): use of overloaded operator '==' is ambiguous
(with operand types 'const Fmx::Types::TGestureID' and 'const System::Int8'
(aka 'const signed char')) sysmac.h(1167):
candidate function sysmac.h(1167):
candidate function sysmac.h(1167):
candidate function TabbedTemplate.cpp(635): built-in candidate operator==(int, int)

В чем проблема? Как исправить?

Answer 1

Если if не компилируется, а switch компилируется, то можно лишь предположить, что TGestureID - это некий enum для которого перегружен оператор сравнения с каким-нибудь посторонним целочисленным типом

enum TGestureID { A, B, C };
bool operator ==(TGestureID id, long i)
{
  return (long) id == i;
}

В такой ситуации получим

int main()
{
  TGestureID id = A;
  const signed char s = 0;
  switch (id)  // Все в порядке
  {
    case s:; 
  }
  if (id == s) // Ошибка: неоднозначная перегрузка оператора `==`
    ;
}

Здесь можно заставить == компилироваться либо через

  if ((int) id == s)

либо через

  if (id == (TGestureID) s)

Но судить о том, относится ли это к вашей ситуации, трудно, ибо информации вы практически никакой не предоставляете, а та, что вы предоставили, зачем-то обгрызена до неузнаваемости.

READ ALSO
Удаление MySQL Community Server

Удаление MySQL Community Server

Доброго времени сутокКак мне удалить MySQL полностью? При запуске Installer'a появляется такое окно:

360
Как работает данный запрос? SQL

Как работает данный запрос? SQL

Понадобилось написать SQL запрос на выбор случайной записи, не долго думая открыл документацию MySQL, почитал про рандом и получилось вот это

359
Добавление записи в базу данных со списком параметров JAVA

Добавление записи в базу данных со списком параметров JAVA

У меня есть класс Person и две таблички в базе данных

361
Вынести view за пределы экрана

Вынести view за пределы экрана

Можно ли вынести view за пределы экрана? Как бы это реализовать, желательно, в xml, в коде java тоже сойдетВ общем, мне нужно конец вьюшки (красная...

257