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'
谢谢你的任何意见.
为什么解除引用指针并使用operator []会导致编译错误
它没有.但你必须拼写正确.更改
return *this[ i ];
Run Code Online (Sandbox Code Playgroud)
至
return (*this)[ i ];
Run Code Online (Sandbox Code Playgroud)
如最初编写的那样,它适用[i]于this,然后取消引用结果.