Это может быть очень очевидный вопрос, простите меня, если так.
У меня есть фрагмент кода из моего проекта,
#include <stdio.h>
class X
{
public:
int i;
X() : i(0) {};
};
int main(int argc,char *arv[])
{
X *ptr = new X[10];
unsigned index = 5;
cout<<ptr[index].i<<endl;
return 0;
}
Вопрос
Могу ли я изменить значение ptr[index]
? Потому что мне нужно вернуть значение ptr[a[index]]
, где a это массив для субиндексирования. Я не хочу изменять существующий исходный код. Требуется любая новая функция, которая может изменить поведение.
Поскольку доступ к оператору индекса находится в слишком многих местах (точнее 536) в моем коде и имеет сложные формулы внутри оператора индекса индекса, я не склонен изменять код во многих местах.
PS:
1. Я попытался перегрузить оператор и пришел к выводу, что это невозможно.
2. Также p [i] будет преобразовано в * (p + i). Я не могу переопределить базовый оператор '+'.
Так что просто хочу подтвердить мое понимание, и если есть какие-либо возможные сокращения, чтобы достичь.
Иначе мне нужно исправить это королевским методом изменения каждой строки кода :).