gpt4 book ai didi

c++ - 如何更改指针访问运算符的含义

转载 作者:行者123 更新时间:2023-11-30 01:31:34 25 4
gpt4 key购买 nike

这可能是一个非常明显的问题,如果是这样请原谅。

我的项目中有以下代码片段,

#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个),并且索引下标运算符内部的公式很复杂,所以我不打算在很多地方更改代码。


附言:
1、我试过运算符重载,得出的结论是不可能。
2. 同样p[i]会被转化为*(p+i)。我无法重新定义基本运算符“+”。

所以只是想再次确认我的理解,以及是否有任何可能的捷径可以实现。
否则我需要通过更改每一行代码的皇家方法来修复它:)。

最佳答案

是的,不可能定义所有参数都是内置类型(包括原始指针)的自定义运算符。

此外,像这样以不明显的方式定义运算符几乎总是不是一个好主意。

您可能需要考虑将指向 X 的原始指针替换为行为类似的类。它可能更容易,具体取决于您的代码(例如,如果您有很多模板)。

关于c++ - 如何更改指针访问运算符的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2897560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com