Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.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++ - Fatal编程技术网

C++ 为什么是';没有可行的操作员过载';?

C++ 为什么是';没有可行的操作员过载';?,c++,C++,我正在编写一个2D数组类并尝试重载运算符[]: typedef unsigned long long int dim; template<typename N> class Array2D { private: dim _n_rows; dim _n_cols; vector<vector<N>> M; public: dim n_rows() { return _n_rows; } dim n_cols()

我正在编写一个2D数组类并尝试重载运算符[]:

typedef unsigned long long int dim;

template<typename N>
class Array2D {

private:

    dim _n_rows;
    dim _n_cols;
    vector<vector<N>> M;

public:

    dim n_rows() { return _n_rows; }
    dim n_cols() { return _n_cols; }
    Array2D(): _n_rows(0), _n_cols(0), M(0, vector<N>(0)){}
    Array2D (const dim &r, const dim &c) : _n_rows(r), _n_cols(c), M(r, vector<N>(c)) {}

    void set(const dim &i, const dim &j, const N &elem) { M[i][j] = elem; } // Works fine
    vector<N>& operator[](int &index) { return M[index]; } // <- PROBLEM
};
typedef无符号长整型;
模板
类数组2d{
私人:
暗排;
暗淡的颜色;
向量M;
公众:
dim n_rows(){return n_rows;}
dim n_cols(){return n_cols;}
Array2D():_n_行(0),_n_列(0),M(0,向量(0)){}
Array2D(const dim&r,const dim&c):_n_行(r),_n_列(c),M(r,向量(c)){}
void集(constdim&i,constdim&j,constn&elem){M[i][j]=elem;}//工作正常
向量和运算符[](int和index){return M[index];}/此函数:

vector<N>& operator[](int &index)

为什么将int作为引用?这是有效的:@m.s.Hmm,那么这是一个与编译器相关的问题吗?@alekscooper否他删除了示例中的
&
。@alekscooper否,我修改了
运算符[](int索引)
以不将引用作为其参数
vector<N>& operator[](int &index)
Array2D<int> L(10, 10);
L[3][3] = 10;
vector<N>& operator[](size_t index)