class Param
{
public:
Param() {}
Param(int newi) { i = newi; }
private:
int i;
};
class Wrapper
{
std::vector<Param> Parameters;
Param operator[](unsigned i)
{
return Parameters;
}
};
void Do()
{
Param P1, P2, P3, P4;
Wrapper.push_back(P1);
Wrapper.push_back(P2);
Wrapper.push_back(P3);
Wrapper[1] = P4;
}
Правильное переопределение operator[]
Почему, допустим, пользуясь контейнером vector<type>, мы можем обращаться к i-ому элементу, используя оператор[] не только на чтение, но и на запись, но если я переопределяю этот оператор, то оно так уже не работает.
Код:
Вот тут, в итоге враппер не будет состоять из P1 P4 и P3, а будет из P1, P2 и P3.
Как добиться того, чтобы массив был P1 P4 и P3?
Можно возвращать указатель
Код:
Param* operator[](unsigned i)
{
return &(Parameters);
}
{
return &(Parameters);
}
И тогда всё работает, но мне хочется, чтобы возвращался не указатель, а по значению. Возможно ли это?
Код:
[/FONT]Param& operator[](unsigned i)
{
return Parameters;
}
{
return Parameters;
}
Цитата: oxotnik333
возвращай ссылку[FONT=monospace]
Код:
[/FONT]Param& operator[](unsigned i)
{
return Parameters;
}
{
return Parameters;
}
Как же я могу иногда тупить. Спасибо :)