->operator[] 的 C++ 快捷方式

Tud*_*dor 0 c++ operator-overloading

我有一个类,我覆盖了 [] 运算符,如果我在方法中实例化了该类,它就可以正常工作。但是如果想将它作为指针传递,我需要这样做来调用操作符:

function(MyData * myData){
    int myInt = myData->operator[](i);
}
Run Code Online (Sandbox Code Playgroud)

这看起来很丑陋,我不妨不使用运算符并定义适当的函数。

我在问是否有语法糖,我是菜鸟,所以我不确定,但我可能会创建一个复制构造函数或其他东西,然后将内容复制到堆栈中并正确使用运算符,但这很慢,我宁愿直接访问内存。

R S*_*ahu 7

您可以使用

int myInt = (*myData)[i];
Run Code Online (Sandbox Code Playgroud)

这在语法上等同于

int myInt = myData->operator[](i);
Run Code Online (Sandbox Code Playgroud)

如果你通过引用传递对象,它会变得更容易。

void function(MyData& myData){
    int myInt = myData[i];
}
Run Code Online (Sandbox Code Playgroud)