【发布时间】:2011-02-23 06:19:24
【问题描述】:
这可能是一个非常明显的问题,如果是,请原谅我。
我的项目中有以下代码 sn-p,
#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)。我无法重新定义基本运算符“+”。
所以只是想再次确认我的理解,以及是否有任何可能的捷径可以实现。
否则我需要通过更改每一行代码的皇家方法来修复它:)。
【问题讨论】:
-
Leeeeeek 删除 []ptr ?
-
:),是的,抱歉忘记添加,因为我急于发布问题。 :) 再次。
标签: c++ function operator-overloading operators multiple-definition-error