Главная страница
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.091 c
6-10343
ers
2003-05-28 11:09
2003.08.04
Как проверить работоспособность сервера?


14-10407
Князь Мышкин
2003-07-16 12:38
2003.08.04
Требуется хакер!


3-10077
Hollywood
2003-07-10 19:15
2003.08.04
Дайте хороший компонент прямого доступа к Access файлу!


1-10189
stskz
2003-07-23 08:43
2003.08.04
Создание консольного приложения


1-10232
Fay
2003-07-21 09:24
2003.08.04
Что значит такое объявление параметров?