我在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'
感谢您的任何意见。
答案 0 :(得分:7)
为什么要解除引用指针并使用运算符 []导致编译错误
没有。但你必须拼写正确。变化
return *this[ i ];
到
return (*this)[ i ];
根据最初的说法,它会将[i]
应用于this
,然后取消引用结果。