C++ 初始化多维数组的元素

C++ 初始化多维数组的元素,c++,arrays,multidimensional-array,C++,Arrays,Multidimensional Array,我无法初始化多维数组的元素 这是我的密码: class A{ int *const e; const int row, column; public: A::A(int r, int c) : row(r), column(c), e(new int[r*c]) { for (int i = 0; i < r*c; i++) { e[i] = 0; } }

我无法初始化多维数组的元素

这是我的密码:

    class A{
    int *const e;   
    const int row, column;  
public:
    A::A(int r, int c) : row(r), column(c), e(new int[r*c]) 
    {
        for (int i = 0; i < r*c; i++)
        {
            e[i] = 0;
        }
    }

    A(const A &matrix) : row(matrix.row), column(matrix.column) ,e(new int[matrix.row*matrix.column])   
    {
        for (int i = 0; i < matrix.row*matrix.column; i++)
        {
            e[i] = matrix.e[i];
        }
    }
    virtual ~A()        //destructing a A
    {
        delete[] e;
    }
};
1 IntelliSense:没有运算符[]与这些操作数匹配操作数类型为:MAT[int]

编辑: 根据评论,我尝试编写运算符[]

virtual int *const operator[ ](int r)
{
    return e[r][0];
}
它应该得到r行的第一个元素。但我有一个错误:

int main(int argc, char* argv[])
{
    A c(2, 5);
    c[0][0] = 1;
    A a(c);
    return 0;
}
1 IntelliSense:表达式必须具有指向对象类型的指针


你试图将[]应用到类A,C++只知道如何在数组上使用操作符[]。为了将它们用于,您必须告诉[]如何用于,因此在类定义中,您应该放:

int *operator[](int x){
    return &e[x*row];
}
它基本上接收您放在括号之间的数字,并返回相应的rowan数组,因此您可以轻松地再次应用[],例如:

c[0]返回第一行

c[0][1]访问第一行的第二个元素

A需要一个运算符[],如果您想这样使用它的话。