这可能是一个非常明显的问题,如果是,请原谅我。
我的项目中有以下代码片段,
#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)。我无法重新定义基本运算符“+”。
所以只想再次确认我的理解以及是否有任何可能的捷径可以实现。
否则我需要通过更改每一行代码的皇家方法来修复它:)。