可以在不引用“this”指针的情况下使用成员运算符吗?
我想重载[] operator并在成员函数中使用它而不引用this指针,因为重载的要点,至少在这种情况下,是简洁的。我不认为它可以做到,是吗?我可以在不取消引用的情况下访问成员函数this,但不能访问成员运算符,这似乎不一致。
#include <iostream>
struct demo {
int i;
void operator [](demo d) {
std::cout << "operator called [" << d.i << "]" << std::endl;
}
void run() {
demo k = { 5 };
(*this)[k] ; // works
this->operator[](k); // works
// [k] // fails - why?
}
};
回答
你可以使用它而不this喜欢
operator[](k);