Форум программистов, компьютерный форум CyberForum.ru

Перегрузка оператора индексирования - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.94
PLAstic
Сообщений: n/a
28.05.2007, 03:03     Перегрузка оператора индексирования #1
Что-то не выходит каменный цветок. Определение класса:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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();
};
И вот реализация перегрузки:
C++
1
2
3
4
5
6
7
8
9
10
TEventData& __fastcall TEventDataSet::operator [](const int idx)
{
 if ((idx >= 0) && (idx <= iRecordCount))
 {
  iCurrentRecordNo = idx;
  CurrentRecord = Buffer[iCurrentRecordNo];
  return *(TEventData*)CurrentRecord;
 }
 return (*(TEventData*)Buffer[0]);
}
Подозреваю, что могу быть сильно далёк от правильного написания кода, ибо не занимался этим уже несколько лет. При вызове этой писанины путём
C++
1
2
3
TEventDataSet EventData;
EventData.AppendRecord();
EventData[0]->strComputerName = "pipec";
Возникает ошибка
E2288 Pointer to structure required on left side of -> or ->*
В чём загвоздка?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2007, 03:03     Перегрузка оператора индексирования
Посмотрите здесь:

C++ Перегрузка оператора ==
Перегрузка операции индексирования, вопрос по синтаксису C++
Перегрузка оператора [][] C++
C++ перегрузка индексирования
C++ Перегрузка оператора индексирования
C++ Перегрузка оператора
C++ Перегрузка оператора <
Аналог перегрузки оператора индексирования (operator []) C++
Перегрузка оператора ++ C++
C++ Перегрузка оператора [][]
Перегрузка индексирования строками C++
C++ Перегрузка оператора индексирования

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
genok
0 / 0 / 0
Регистрация: 24.02.2007
Сообщений: 30
31.05.2007, 16:17     Перегрузка оператора индексирования #2
не знаю пока насчет ошибки 2288, но в строке

EventData[0]->strComputerName = "pipec";

точно еще одна ошибка. для массива char применяется strcpy и подобное, а не простое присваивание...



и к ошибке 2288:

может стоит просто вместо структуры в класс запихать указатель на AnsiString-строки?
PLAstic
Сообщений: n/a
01.06.2007, 03:41     Перегрузка оператора индексирования #3
genok (31.05.2007)
не знаю пока насчет ошибки 2288, но в строке
EventData[0]->strComputerName = "pipec";
точно еще одна ошибка. для массива char применяется strcpy и подобное, а не простое присваивание...
Да я это тогда же поправил. Привык работать с AnsiString.
genok (31.05.2007)и к ошибке 2288:
может стоит просто вместо структуры в класс запихать указатель на AnsiString-строки?
Смысл в чём. Мне нужно обслуживать "очередь событий" - массив элементов типа структура. Т.е. сторонний софт может добавлять элементы в конец массива, а мне надо соотв-нно обрабатывать элементы с начала массива, удаляя их после обработки и сдвигая все последующие вперёд.
Т.е. нечто типа стека FIFO. Вот для обслуживания это стека я и попробовал написать класс. Может можно сделать как-то проще?
PLAstic
Сообщений: n/a
02.06.2007, 20:25     Перегрузка оператора индексирования #4
Сделал. Задача снята.
Yandex
Объявления
02.06.2007, 20:25     Перегрузка оператора индексирования
Ответ Создать тему
Опции темы

Текущее время: 00:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru