C++:返回重载[]用"this"

Jak*_*e Z 1 c++ pointers return operator-overloading this

我在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 );

}
Run Code Online (Sandbox Code Playgroud)

为什么取消引用指针this并使用operator []会导致编译错误但是直接调用运算符?

我得到以下错误编译:

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

谢谢你的任何意见.

Pet*_*ker 7

为什么解除引用指针并使用operator []会导致编译错误

它没有.但你必须拼写正确.更改

return *this[ i ];
Run Code Online (Sandbox Code Playgroud)

return (*this)[ i ];
Run Code Online (Sandbox Code Playgroud)

如最初编写的那样,它适用[i]this,然后取消引用结果.

  • 解释:这是因为索引操作符`[]`的优先级高于解除引用操作符`*`,所以当编译器解析该表达式并决定首先应用哪个操作符时,`[]`运算符获胜并且`*`运算符应用于结果索引表达式. (2认同)