如何将运算符[] []创建为二维数组(矩阵)

时间:2018-01-13 13:34:31

标签: c++ visual-c++ operator-overloading

作为一个练习,我必须将一个operator [] []压缩到一个矩阵类。编译器会产生问题,甚至不让我开始。有没有人有任何iddea为什么?

template <class Type>
Type Matrix<Type>::operator[][](int i, int j)
{
    return getElement(i, j);
}

该方法需要返回矩阵中[place] [col]的位置。 感谢

2 个答案:

答案 0 :(得分:0)

C ++中没有void DoSomething() { HttpWebResponse myHttpWebResponse = (HttpWebResponse)CreateRequest().GetResponse(); Response.Clear(); Stream receiveStream = myHttpWebResponse.GetResponseStream(); Response.ContentType = "image/jpeg"; } 。实现目标的最简单方法是使用operator[][]

operator()

如果您想让自己的生活更加艰难,可以通过重载template <class Type> Type Matrix<Type>::operator()(int i, int j) { return getElement(i, j); } 来使用解决方法,以便它返回重载operator[]的代理对象。对于来电者,受链接的operator[]来电会像operator[]一样有效。

答案 1 :(得分:0)

正如另一个答案建议你可以用一个函数来做,但如果你真的想这样做,你需要从矩阵的operator []返回一个对象,然后这个对象将需要一个operator []返回类型。例如:

template <class Type>
class Matrix {
public:
    class Row{
    public:
        Type operator[](int col) {

        }
    };
    Row operator[](int row) {

    }
};

...

Matrix<int> m;
m[1][2];