C ++:返回重载[]用“this”

时间:2012-09-13 20:52:14

标签: c++ pointers operator-overloading return 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 );

}

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

我收到以下错误编译:

  

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

感谢您的任何意见。

1 个答案:

答案 0 :(得分:7)

  

为什么要解除引用指针并使用运算符   []导致编译错误

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

return *this[ i ];

return (*this)[ i ];

根据最初的说法,它会将[i]应用于this,然后取消引用结果。