Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;:向量的运算符[]重载<&燃气轮机;_C++_Operator Overloading_Operators_Overloading_Stdvector - Fatal编程技术网

C++ C++;:向量的运算符[]重载<&燃气轮机;

C++ C++;:向量的运算符[]重载<&燃气轮机;,c++,operator-overloading,operators,overloading,stdvector,C++,Operator Overloading,Operators,Overloading,Stdvector,我当前正在尝试在向量上重载运算符[]。我试图让这个操作符像在Matlab或Python中一样处理负索引或大于向量长度的索引。我的问题不是得到正确的结果,而是实际重载运算符,因为我知道我将在重载代码中使用非重载运算符。我需要它用于特定类的向量,但如果它适用于任何向量,它会更好 现在我的代码是: 标题: MyClass std::vector::operator[](std::vector const vector,int const idx)const; 资料来源: Myclass vector

我当前正在尝试在向量上重载运算符
[]
。我试图让这个操作符像在Matlab或Python中一样处理负索引或大于向量长度的索引。我的问题不是得到正确的结果,而是实际重载运算符,因为我知道我将在重载代码中使用非重载运算符。我需要它用于特定类的向量,但如果它适用于任何
向量
,它会更好

现在我的代码是: 标题:

MyClass std::vector::operator[](std::vector const vector,int const idx)const;
资料来源:

Myclass vector::operator[](vector<MyClass> const vector,int const idx) const {
    n=vector.size()
    if((idx>=0) && (idx<n)){
        return vector[idx];
    }
    else if(idx<0){
        return vector[n+idx%n]
    }
    else{
        return vector[idx%n]
    }
}
Myclass向量::运算符[](向量常量向量,int常量idx)常量{
n=vector.size()

如果((idx>=0)&(idx您的错误与语法有关:

vector::operator[]
应该是

vector<MyClass>::operator[]

欢迎使用Stack Overflow!请使用或@Aganju:来回答您的问题,因为它们没有回答问题,而且是错误的。@Aganju:
vector::operator[]
不执行绑定检查。
vector::at
被强制执行绑定检查。我被纠正了。我可以发誓这是另一种方式。尽管遗憾的是没有其他内置方法(甚至操作符本身,因为我认为它在边界之外是无用的)做我想做的事情,它在很多情况下都会非常有用!谢谢你的回答!但是我将不得不更改我的所有代码,因为我已经在所有地方使用向量了…我想我将在本地处理索引超出边界的问题,即使它没有那么优雅^^^问题,
操作符[]是否不能保证
不会修改任何
MyClass
成员?@codekaizer我认为它不应该修改,因为它没有重载MyClass的操作符[]!对不起,我是说
MyVector
。我希望它也有一个
const
-等价的
操作符[]
它将返回一个
常量引用
。您不应该同时重载这两个引用吗?@codekaizer:是的,一个真正的实现也会有这个。
vector::operator[]
vector<MyClass>::operator[]
struct MyVector : std::vector<MyClass>
{
    MyClass& operator[](std::size_t index)
    { 
        // ...
    } 
};