实施
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
维诺德
答案 0 :(得分:3)
this
的类型为Obj<T, C>*
。要像Obj<T, C>
的实例一样使用它,只需使用*this
。
例如,
T& tmp = (*this)[some_count];
或者,您可以将operator[]
用作任何其他成员函数:
T& tmp = operator[](some_count);
但这通常更令人困惑,所以你应该更喜欢第一种格式。