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

如何使用重载下标运算符从私有数组中输出字符串?

如何正确调用重载的下标运算符获取私有数组中的字符串

你的问题出在对指针和重载运算符的理解上:del是OrderNode*类型指针,del[i]会被C++解释为指针算术操作(把del当成OrderNode数组的首地址,取第i个元素),而非调用你在OrderNode中重载的operator[]。加上&后自然输出的是这个“数组元素”的内存地址,完全偏离了你的需求。

正确的调用方式

要调用OrderNode的重载下标运算符,需要先解引用指针得到OrderNode对象,再使用下标运算符。修改dequeue方法中的循环部分即可:

void dequeue() {
    if (front == NULL) {
        cout << "No pending order\n";
        return;
    }
    OrderNode* del = front;
    front = front->next;
    cout << "This order consists of the following items:\n";
    for (int i = 0; i < del->itemCount; i++) {
        // 解引用指针后调用重载的[]运算符,直接输出字符串
        cout << "- " << (*del)[i] << endl;
    }
    // 也可以用显式调用运算符的方式:del->operator[](i)
    delete del;
}

关键解释

  • (*del):将指针del解引用,得到当前OrderNode对象实例。
  • (*del)[i]:调用你在OrderNode中定义的operator[],返回对应索引的orderItems字符串,此时直接用cout输出就能得到正确的内容。

额外优化

你原来的循环里&del[i];是一个无意义的表达式,既没有输出也没有操作,修改后直接输出订单项即可。

内容的提问来源于stack exchange,提问作者Jonathan Tyler Ecton-Rodriguez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 14:20:26