You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过类指针调用已重载的数组下标运算符[]?

解决类指针使用重载下标运算符[]的问题

嗨,我来帮你搞定这个问题~你遇到的报错是因为C++的语法规则限制,直接用->[]是不合法的,得换两种正确的写法之一:

方法1:先解引用指针,再用下标运算符

因为[]是针对类对象的运算符,所以你需要先把指针转换成对象实例(用*解引用),然后再用[]。举个例子:

basicVector *a = new basicVector(10);
// 先解引用指针得到对象,再使用[]
(*a)[3] = 42; // 这样就可以正常访问了

这里要注意括号不能少,因为[]的优先级比*高,如果写成*a[3],编译器会先处理a[3](把指针当成数组),这显然不是你想要的结果。

方法2:显式调用重载的operator[]成员函数

既然operator[]是类的成员函数,那你可以直接通过指针调用它,写法是:

basicVector *a = new basicVector(10);
// 显式调用运算符函数
a->operator[](3) = 42;

这种方式直接指定调用类的operator[]成员,语法上完全合法,效果和第一种方法一样。

补充提醒

记得用完动态分配的对象后,要释放内存避免泄漏:

delete a;

内容的提问来源于stack exchange,提问作者Salman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:55:25