TSQLQuery, TFields и оператор []

У меня есть запрос, используя TSQLQuery, который выглядит так

TSQLQuery* tq = new TSQLQuery(NULL);
tq->SQLConnection = atdbDM->SQLConnection1;
tq->SQL->Add("SELECT LAST_INSERT_ID();");
tq->Open();
int insert_id = tq->Fields->operator [](0)->AsInteger;

Выражение

int insert_id = tq->Fields->operator [](0)->AsInteger;

довольно неуклюжий Если посмотреть на реализацию, оператор [] перегружен в заголовке:

public:
TField* operator[](int Index) { return Fields[Index]; }

Однако, если я позвоню:

int insert_id = tq->Fields[0]->AsInteger;

Я получаю ошибку компилятора:

[bcc32 Error] TRegisterFreshCSBatchForm.cpp(97): E2288 Pointer to structure
required on left side of -> or ->*
TRegisterFreshCSBatchForm::mRegisterBtnClick(TObject *)

Любые идеи, почему вышеупомянутый вызов не компилируется? Я должно быть что-то упустил ..

0

Решение

Правильный синтаксис

int insert_id = (*tq->Fields)[0]->AsInteger;

Для включения перегруженного оператора должен быть объект класса, а не указатель.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]