从对象内部调用 operator[] 方法

Invoking operator[] method from within object

实现

template<class T, class C> 
class{
public:
...
T& operator(int)[];
private:
...
void do_something();

};

定义如

template<class T, class C> void Obj<T,C>::do_something(){
 auto some_count = 0;
 ...
 T& tmp = this->[some_count];

 ...
}

得到以下编译错误:

error: expected unqualified-id

知道哪里出了问题吗?

TIA

维诺德

this的类型是Obj<T, C>*。要像 Obj<T, C> 的实例一样使用它,只需使用 *this.

例如,

T& tmp = (*this)[some_count];

或者,您可以将 operator[] 用作任何其他成员函数:

T& tmp = operator[](some_count);

但这通常更容易混淆,因此您应该更喜欢第一种格式。