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

时间:2018-01-06 00:34:50

标签: c++14 operator-keyword

实施

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];

 ...
}

收到以下编译错误:

  

错误:预期的unqualified-id

知道可能出现什么问题吗?

TIA

维诺德

1 个答案:

答案 0 :(得分:3)

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

例如,

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

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

T& tmp = operator[](some_count);

但这通常更令人困惑,所以你应该更喜欢第一种格式。