|
|
|
Supreme Being
      
участник
Last Login: 19.09.2007 1:55
Сообщ.: 97,
Visits: 1 021
|
|
Что-то не выходит каменный цветок. Определение класса:struct TEventData { char strComputerName[128]; }; class TEventDataSet { private: int iCurrentRecordNo; //текущая запись TEventData* Buffer[]; //буфер public: int iRecordCount; //количество записей TEventData* CurrentRecord; //структура новой записи для заполнения TEventData& __fastcall operator [](const int idx); //пытаюсь перегрузить оператор индексирования void __fastcall AppendRecord(); };И вот реализация перегрузки: TEventData& __fastcall TEventDataSet::operator [](const int idx) { if ((idx >= 0) && (idx <= iRecordCount)) { iCurrentRecordNo = idx; CurrentRecord = Buffer[iCurrentRecordNo]; return *(TEventData*)CurrentRecord; } return (*(TEventData*)Buffer[0]); } Подозреваю, что могу быть сильно далёк от правильного написания кода, ибо не занимался этим уже несколько лет. При вызове этой писанины путём TEventDataSet EventData; EventData.AppendRecord(); EventData[0]->strComputerName = "pipec"; Возникает ошибка E2288 Pointer to structure required on left side of -> or ->* В чём загвоздка?
|
|
|
|
|
Forum Member
      
участник
Last Login: 30.06.2007 8:03
Сообщ.: 28,
Visits: 42
|
|
не знаю пока насчет ошибки 2288, но в строке
EventData[0]->strComputerName = "pipec";
точно еще одна ошибка. для массива char применяется strcpy и подобное, а не простое присваивание...
и к ошибке 2288:
может стоит просто вместо структуры в класс запихать указатель на AnsiString-строки?
|
|
|
|
|
Supreme Being
      
участник
Last Login: 19.09.2007 1:55
Сообщ.: 97,
Visits: 1 021
|
|
genok (31.05.2007) не знаю пока насчет ошибки 2288, но в строке EventData[0]->strComputerName = "pipec"; точно еще одна ошибка. для массива char применяется strcpy и подобное, а не простое присваивание... Да я это тогда же поправил. Привык работать с AnsiString.
genok (31.05.2007)и к ошибке 2288: может стоит просто вместо структуры в класс запихать указатель на AnsiString-строки? Смысл в чём. Мне нужно обслуживать "очередь событий" - массив элементов типа структура. Т.е. сторонний софт может добавлять элементы в конец массива, а мне надо соотв-нно обрабатывать элементы с начала массива, удаляя их после обработки и сдвигая все последующие вперёд.Т.е. нечто типа стека FIFO. Вот для обслуживания это стека я и попробовал написать класс. Может можно сделать как-то проще?
|
|
|
|
|
Supreme Being
      
участник
Last Login: 19.09.2007 1:55
Сообщ.: 97,
Visits: 1 021
|
|
|
|
|