Я сделал многочисленные поиски и нашли массу примеров и учебных пособий, но до сих пор не могу понять, как получить значение при записи оператора []
...C++ перегрузить оператор [] для записи/комплект
I чувствую, что я схожу с ума. Должно быть, я что-то очень простое отсутствие
, насколько я могу сказать, есть одна функция для get
и set
, и это выглядит примерно так:
V& operator[](string K);
или это:
double &operator[](int n);
сейчас большой, мы можем получить то, что есть:
a[HERE]
, как HERE
становится double &operator[](int HERE);
, и мы можем легко работать с ним
, но как же мы получим, что:
a[4] = HERE
C есть # два очень ясно получить и установить методы с ключевым значением который представляет назначаемый объект.
public string this[int key]
{
get
{
if(key == 1)
return "1!";
if(key == 2)
return "2!";
else
return "3!";
}
set
{
if(value == "setting") //value is a[3] = THIS
this.isSet = true;
}
}
Что вы спрашиваете? – juanchopanza
Вы не получаете правильную сторону назначения по возвращаемому значению внутри 'operator []', из которого вы возвращаете это значение. Вы получаете правильную сторону, когда вы перегружаете 'operator =' на тип возвращаемого значения. Чтобы проиллюстрировать это: 'a [5] = HERE' примерно эквивалентен' V & ret = a.operator [] (5); ret.operator = (ЗДЕСЬ); ' – dyp
Ну,' a [4] = HERE' означает (интуитивно, предполагая, что оператор ведет себя последовательно со встроенными типами) "назначьте ЗДЕСЬ' a [4] '" (при условии, что 'a 'is not const, а HERE - макро/переменная, определенная где-то). Что вы думаете об этом? – JBL