【问题标题】:Making an array of Objects and using overloaded [] in c++在 C++ 中创建一个对象数组并使用重载 []
【发布时间】:2012-08-08 15:27:45
【问题描述】:

我创建了这个类,比如Apple,它有一个重载的operator []
然后在另一堂课上,我做了一系列苹果,Apple stack[10]
然后,当我在表达式中使用stack[2],而不是stack[2] 作为对象时,编译器的行为就像将堆栈视为stack[0],然后调用operator [] 及其参数为2

您能否建议一种我可以打电话给stack[2] 的方法?

【问题讨论】:

  • 这看起来很奇怪; stack[2] 确实应该给你第三个 Apple 对象。您应该发布您的代码 - 最好是一个简化版本,只包含演示问题所必需的代码。
  • 哦,好吧,那是另一个问题。我没有发布它的原因是因为这是一项学校作业,并且是基于我们以前的作业的相当大的作业。感谢您提供帮助:D

标签: c++ arrays object operator-keyword


【解决方案1】:

提供代码会很有帮助。

但是,假设您在 Apple 类中有一个变量 x。您可以使用(stack+2)->x 访问它。这将与stack[2].x 一样工作。如果您想使用重载运算符,您可以类似地使用它。这不会混淆编译器。

【讨论】:

    【解决方案2】:

    根据目前给出的信息,stack[2] 指的是一个Apple 对象。您也可以通过stack[2][5] 调用Apple 类中重载的operator[]

    【讨论】:

      【解决方案3】:

      您可以使用指针来获取数组元素:

      *(stack+2)[3]; // lookup element 2 and call its [] operator with 3
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-08
        • 1970-01-01
        • 2018-12-18
        • 1970-01-01
        • 1970-01-01
        • 2022-01-21
        • 2017-05-07
        • 2016-10-15
        相关资源
        最近更新 更多