Поиск:

Ответ в темуСоздание новой темы Создание опроса
> перегруз оператора [], ткните пальцем в ошибку :) 
V
    Опции темы
DonPager
  Дата 16.1.2008, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Колдырь
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 28.3.2003
Где: Воронеж

Репутация: 1
Всего: 2



есть класс:
Код

class TAuthTable
{
private:    // User declarations
  int fMaxUserId;
  AnsiString fIniFileName;
  TList *fUsers;
  TSMPP_User_acc *fUser;
  int getMaxUserId(){return fMaxUserId;};
  int getUserCnt(){return fUsers->Count;};
  TSMPP_User_acc* getUser(int id);

public:        // User declarations
  TSMPP_User_acc*  operator[] (int id) {return getUser(id);};

  __property int UserCount = {read = getUserCnt};
  __property int MaxUsers = {read = getMaxUserId};
  TAuthTable(AnsiString IniFileName);
  ~TAuthTable();
  bool AddUser(TSMPP_User_acc *NewUser);
  bool RemoveUser(int id);
};

вопрос в том правильно ли я перегружаю оператор []
потому как на такую запись:
Код
 TSMPP_User_acc *xUser = AuthList[i]; 

выдаёт ошибку несоответствия типов


--------------------
кодер + лодырь = колдырь
PM MAIL ICQ Skype GTalk   Вверх
maxim1000
Дата 16.1.2008, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: нет
Всего: 110



а как объявлен AuthList?


--------------------
qqq
PM WWW   Вверх
DonPager
Дата 16.1.2008, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Колдырь
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 28.3.2003
Где: Воронеж

Репутация: 1
Всего: 2



как (TAuthTable *)


--------------------
кодер + лодырь = колдырь
PM MAIL ICQ Skype GTalk   Вверх
Fazil6
Дата 16.1.2008, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 11
Всего: 60



<сори... переработал...>

Добавлено через 2 минуты и 43 секунды
Цитата(DonPager @  16.1.2008,  15:11 Найти цитируемый пост)
как (TAuthTable *)

а используешь как TAuthTable

Добавлено через 6 минут и 34 секунды
Цитата(DonPager @  16.1.2008,  13:05 Найти цитируемый пост)
TSMPP_User_acc* getUser(int id);

что за функция ?

Это сообщение отредактировал(а) Fazil6 - 16.1.2008, 16:13
PM MAIL   Вверх
DonPager
Дата 16.1.2008, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Колдырь
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 28.3.2003
Где: Воронеж

Репутация: 1
Всего: 2



ну приведу пример реализации
Код

TSMPP_User_acc* TAuthTable::getUser(int id)
{
  TSMPP_User_acc* res = (TSMPP_User_acc*)fUsers->Items[id];
  return res;
}


но имхо описаловки достачно


--------------------
кодер + лодырь = колдырь
PM MAIL ICQ Skype GTalk   Вверх
DonPager
Дата 16.1.2008, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Колдырь
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 28.3.2003
Где: Воронеж

Репутация: 1
Всего: 2



вобщем х. с ним с оператором ... smile
сделал так
Код

  __property TSMPP_User_acc* Items[int id] = {read=getUser};

и всё ништяк 


--------------------
кодер + лодырь = колдырь
PM MAIL ICQ Skype GTalk   Вверх
ama_kid
Дата 16.1.2008, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 10
Всего: 95



Цитата(DonPager @  16.1.2008,  16:55 Найти цитируемый пост)
вобщем х. с ним с оператором ...
ну тебе же Fazil6 вроде правильно указал путь: надо было просто написать типо такого:
Код
TSMPP_User_acc *xUser = (*AuthList)[i];



--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
DonPager
Дата 17.1.2008, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Колдырь
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 28.3.2003
Где: Воронеж

Репутация: 1
Всего: 2



[QUOTE=
Код
TSMPP_User_acc *xUser = (*AuthList)[i];

вобщем мне то хотелось писать именно AuthList[i],
но так и не догнал как надо было описать перегрузку, чтобы так  написать


--------------------
кодер + лодырь = колдырь
PM MAIL ICQ Skype GTalk   Вверх
ama_kid
Дата 17.1.2008, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 10
Всего: 95



Цитата(DonPager @  17.1.2008,  11:01 Найти цитируемый пост)
вобщем мне то хотелось писать именно AuthList[i]
Тогда надо было его и объявлять как "объект", а не "ссылка на объект", т.е.
Код

TAuthTable AuthList;




--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
DonPager
Дата 17.1.2008, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Колдырь
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 28.3.2003
Где: Воронеж

Репутация: 1
Всего: 2



ama_kid, Вобщем я так понял перегрузку для указателя сделать нельзя ?


--------------------
кодер + лодырь = колдырь
PM MAIL ICQ Skype GTalk   Вверх
ama_kid
Дата 17.1.2008, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 10
Всего: 95



Цитата(DonPager @  17.1.2008,  12:03 Найти цитируемый пост)
я так понял перегрузку для указателя сделать нельзя ? 
вообще-то перегрузка оператора делается для типа. Переменную типа ты можешь объявить объектом, либо указателем на объект и в зависимости от того как ты объявил  - соответствующим образом обращаться к выделенному участку памяти - либо по имени (в случае объекта), либо разыменовыванием указателя... тут вроде как даже сам факт наличия перегрузки оператора ни при чем...


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0495 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.