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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.94
PLAstic
Сообщений: n/a
#1

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

28.05.2007, 03:03. Просмотров 3754. Ответов 3
Метки нет (Все метки)

Что-то не выходит каменный цветок. Определение класса:
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++
Всем привет! Ситуация такая - есть 2 класса, поле одного класса является массивом из элементов второго класса. Необходимо переопределить...

перегрузка индексирования - C++
на пример как перегрузить оператор индексирования с 2-мя параметрами: f

Перегрузка индексирования строками - C++
Пишу динамический массив, состоящий из строк. Возможно ли перегрузить оператор индексирования для строк? Т.е. чтобы можно было писать не...

Аналог перегрузки оператора индексирования (operator []) - C++
Как по-другому(то есть в виде обычной функции или как то ещё) можно записать перегрузку оператора индексирования? Например в моём случае:...

Перегрузка операции индексирования, вопрос по синтаксису - C++
Здравствуйте форумчане. Должна сразу сказать, что в своей практике с С++ сталкивалась мало, поэтому в нем считаю себя новичком. Но все же...

3
genok
0 / 0 / 0
Регистрация: 24.02.2007
Сообщений: 30
31.05.2007, 16:17 #2
не знаю пока насчет ошибки 2288, но в строке

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

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



и к ошибке 2288:

может стоит просто вместо структуры в класс запихать указатель на AnsiString-строки?
0
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
Сделал. Задача снята.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.06.2007, 20:25
Привет! Вот еще темы с ответами:

Перегрузка оператора == - C++
Пытаюсь перегрузить оператор == . Делаю так: В классе: class cData // класс дата { int year; // год short mounth; //...

Перегрузка оператора < - C++
Здравствуйте. Есть класс треугольник(Triangle), надо перегрузить оператор &lt; для объектов класса Triangle. Написал код, вроде ошибок нет, но...

Перегрузка оператора - C++
Здравствуйте, друзья. Помогите пожалуйста найти ошибку, вернее я знаю где, но пока не понимаю как её исправить: //Добавить в строковый...

Перегрузка оператора = - C++
Ещё раз всем привет! Недавно разместила у себя &quot;лайт-вершин&quot; своего вектора - int_array. И все дружно начали мне говорить, что у меня...


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

Или воспользуйтесь поиском по форуму:
4
Yandex
Объявления
02.06.2007, 20:25
Ответ Создать тему
Опции темы

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