Вниз
Скачать: 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.012 c
11-10152
Arioch
2002-12-03 15:10
2003.08.04
А будет ли Unicode ? (кто что думает по поводу?)


14-10389
Danilcha
2003-07-17 02:35
2003.08.04
Российский студент обошел программистов NASA


14-10362
zolotov
2003-07-15 21:13
2003.08.04
Как заменить старую версию F1Book более новой?


14-10447
Е-Моё имя
2003-07-18 09:42
2003.08.04
Кто знает шведский язык? ;)))


11-10157
blackalex
2002-12-03 17:39
2003.08.04
Где Кладов?




   Наверх