1

我在 C++ 中重载了一个简单类的 [](方括号)运算符,以从数组中返回一个整数。我现在要在成员函数中重用这个重载运算符。我无法实现这一点,因为 using*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'

感谢您的任何意见。

4

1 回答 1

7

为什么取消引用指针 this 并使用运算符 [] 会导致编译错误

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

return *this[ i ];

return (*this)[ i ];

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

于 2012-09-13T20:54:22.207 回答