从对象内部调用 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);
但这通常更容易混淆,因此您应该更喜欢第一种格式。
实现
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);
但这通常更容易混淆,因此您应该更喜欢第一种格式。