【问题标题】:C++: Return Overloaded [] With "this"C ++:使用“this”返回重载[]
【发布时间】:2012-09-07 00:48:13
【问题描述】:

我在 C++ 中重载了一个简单类的 [](方括号)运算符,以从数组中返回一个整数。我现在要在成员函数中重用这个重载运算符。我无法实现这一点,因为使用 *this[ i ] 显然不起作用,尽管我可以直接引用运算符:

int & A::operator [] (size_t i)
{

    return ints[ i ];

}
...
int A::getVal ( size_t i) const
{

  // Does not work
  return *this[ i ];

  // Does work
  // return operator []( i );

}

为什么解引用指针this并使用操作符[]会导致编译错误,但直接调用操作符有效?

编译时出现以下错误:

无法从 'const Array' 转换为 'char'

感谢您的任何意见。

【问题讨论】:

标签: c++ pointers operator-overloading return this


【解决方案1】:

为什么解引用指针 this 并使用操作符 [] 导致编译错误

它没有。但你必须拼写正确。改变

return *this[ i ];

return (*this)[ i ];

如最初所写,它将[i] 应用于this,然后取消引用结果。

【讨论】:

  • 解释一下:这是因为索引运算符[]的优先级高于解引用运算符*,所以当编译器解析该表达式并决定首先应用哪个运算符时,@987654327 @ 运算符获胜,* 运算符应用于生成的索引表达式。
猜你喜欢
  • 1970-01-01
  • 2011-11-19
  • 1970-01-01
  • 1970-01-01
  • 2016-07-23
  • 2019-12-11
  • 1970-01-01
  • 1970-01-01
  • 2017-06-23
相关资源
最近更新 更多