Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.04;
Скачать: CL | DM;

Вниз

Проблема с объявлением оператора для var[idx] = val;   Найти похожие ветки 

 
VEG ©   (2003-07-16 13:16) [0]

Создаю класс, который работает с орератором индексации [].
Проблема при объявлении оператора, когда он находится слева выражения (variable[index] = value;)
Вот что я написал:
class scfgidx {
public:
string operator [] (const UINT idx) const;//varIn = varOut[idx];
};
/*
scfgidx& operator [] (const UINT idx, const string str);//var[idx] = val; //Как я понимаю, нужно писать нечто вроде этого...
*/


 
VEG ©   (2003-07-16 16:11) [1]

Но так ведь можно сделать?!?


 
Suntechnic ©   (2003-07-16 17:35) [2]

Ну а в чём проблема то?


 
VEG ©   (2003-07-16 18:12) [3]

Как объявить оператор [] для var[idx] = val;


 
Suntechnic ©   (2003-07-16 18:27) [4]

Что-то я тебя не пойму.
Какого типа переменная val? Если string то пиши
string operator [] (const UINT idx) const;
или
string & operator [] (const UINT idx) const; в зависимости от логки твоего класса. Опять же, если val не типа string, то возвращай тот тип, который тебе нужен.

P.S.
Только не вздумай написать что-то типа этого:
string & operator [] (const UINT idx) const
{
string temp;
//... do something
return temp;
}


 
VEG ©   (2003-07-16 18:52) [5]

Это я уже написал. Нужна обратная ф-ия.
переменная[индекс]=присваеваемое значение


 
Suntechnic ©   (2003-07-16 18:56) [6]

>VEG ©
Ты что издеваешься надо мной? Какая ещё "обратная ф-ция"? Объясни нормальным языком что надо.


 
VEG ©   (2003-07-16 19:03) [7]

scfgidx sss;
sss[1]="text";


 
ZZ ©   (2003-07-16 19:04) [8]

VEG
Ты сайтом случайно не ошибся? :)


 
VEG ©   (2003-07-16 19:08) [9]

Неа


 
Suntechnic ©   (2003-07-16 19:11) [10]

Для случая

scfgidx sss;
sss[1]="text";

оператор
string operator [] (const UINT idx) const;
или
string & operator [] (const UINT idx) const;


 
VEG ©   (2003-07-16 19:19) [11]

Тогда где мне взять параметр, что присваивают элементу?


 
Suntechnic ©   (2003-07-16 19:39) [12]

Какой ещё параметр? Зачем он нужен?
Есть оператор индексации. Прегрузки этого оператора подразумевает использование только одного параметра как индекса. Если у тебя много параметров, то это уже не оператор индексации и перегружать тут нечего. Пиши отдельную ф-цию для присвоения значения.


 
VEG ©   (2003-07-16 19:47) [13]

Не понимаю. Откуда мне узнать, что присваивают? Пожалуйста, можно пример?


 
Suntechnic ©   (2003-07-16 19:53) [14]

>VEG ©
Ну какой ещё пример? Ты понимаешь что такое оператор индексации? Это не оператор присвоения и сам по себе он ничего не присваивает и следовательно ему не нужны никакие параметры. Опрератор индексации всего лишь возвращает значение, которое может быть впоследствии чему-нибудь быть присвоено или быть изменено, если он возвращает ссылку или указатель. Что такое lvalue тебе я надеюсь объяснять не надо? Так вот оператор индексации всегда возвращает lvalue.


 
VEG ©   (2003-07-16 19:54) [15]

Попробую понять...



Страницы: 1 вся ветка

Текущий архив: 2003.08.04;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.023 c
4-10519
Андрей
2003-06-02 12:19
2003.08.04
Как получить иконку проассоциированую с данным типом файла?


1-10196
Buffoon
2003-07-19 21:23
2003.08.04
Поиск в StringGrid по первым буквам


14-10451
Sugrob
2003-07-18 12:11
2003.08.04
Нужнен TTreeView с CheckBox-ами для отображения из таблиц


11-10158
Arioch
2002-12-03 15:05
2003.08.04
Localizy - что это?


3-10105
Ренат
2003-07-14 14:09
2003.08.04
Путь к источнику данных