这可能是一个重复的问题,但我似乎找不到答案...我正在尝试使用operator[]
在C ++中实现一个可切片的容器,如对象。这是我的实现(不起作用):
class SlicableIntVector{
private:
std::vector<int> vector;
public:
explicit SlicableIntVector(std::vector<int> vector): vector(vector){};
// The usual way of overloading operator[]
int &operator[](int index){
return vector[index];
}
// This version doesn't work as the argument is not binary
int &operator[](int start, int end){
return vector[vector.begin()+start, vector.begin()+start+end];
}
}
};
除了仅使用另一种方法来实现切片操作外,我还需要哪些选择才能使用operator[]
进行切片?如果我能像python list
那样灵活地切片,我会很高兴的。
来自n4835
:
12.6.2二进制运算符[over.binary]1二元运算符应由具有一个参数的非静态成员函数(11.4.1)实现或通过具有两个参数的非成员函数