如何通过类指针调用已重载的数组下标运算符[]?
解决类指针使用重载下标运算符[]的问题
嗨,我来帮你搞定这个问题~你遇到的报错是因为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
相关产品推荐
相关产品推荐

