прямо сейчас, я должен написатьПерегрузка операторов = и []
st[1];
st = 5;
Что я должен изменить в своем коде, чтобы быть в состоянии сделать это:
st[1] = 5;
#include <iostream>
using namespace std;
class A
{
public:
A(){this->z = 0;}
void operator = (int t) { this->x[this->z] = t+10; }
int& operator [] (int t) { this->z=t; return this->x[t]; }
private:
int x[2];
int z;
};
void main()
{
A st;
st[0]=9;
cout<<st[0];
system("pause");
}
UPD: Теперь я вижу 9 вместо 19.
Верните свой int по ссылке для оператора [] –
Верните ссылку из 'operator []'. Остерегайтесь того, что это нарушает инкапсуляцию значения, содержащегося в элементах, открытых таким образом полностью. – JoergB
Я не совсем уверен, что вы думаете 'st [1];' делает. Несомненно, _doesn't_ выберите элемент массива 1 для следующего независимого оператора, если это то, что вы хотите. 'Й [1]; st = 5; 'и' st [1] = 5' - две совершенно разные вещи. – Damon