Форум: "Потрепаться";
Текущий архив: 2003.08.04;
Скачать: [xml.tar.bz2];
ВнизПроблема с объявлением оператора для 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c