Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.011 c
1-10210
furious_gnom
2003-07-22 20:10
2003.08.04
Строки в прототипах функций OLE объекта


7-10463
Navi
2003-05-11 19:37
2003.08.04
Не доступен COM1


6-10317
som
2003-05-27 12:20
2003.08.04
FTP


14-10409
_____
2003-07-17 12:52
2003.08.04
Популярность форума


1-10255
PrettyFly
2003-07-20 13:22
2003.08.04
Framы - диверсанты ;-)




   Наверх