这可能是一个非常明显的问题,如果是,请原谅我。
我的项目中有以下代码片段,
#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]]where a 是用于子索引的数组的值。我不想修改现有的源代码。需要添加任何可以改变行为的新功能。
由于在我的代码中访问索引运算符的地方太多(准确地说是 536 个),并且索引下标运算符内部有复杂的公式,所以我不倾向于在很多地方更改代码。
PS:
1.我尝试了运算符重载并得出结论,这是不可能的。
2. p[i] 也将转换为 *(p+i)。我无法重新定义基本运算符“+”。
所以只想再次确认我的理解以及是否有任何可能的捷径可以实现。
否则我需要通过更改每一行代码的皇家方法来修复它:)。