运算符() 作为矩阵类的下标

Operator() as a subscript for a Matrix class

本文关键字:下标 运算符      更新时间:2023-10-16

通过关注这个网站C++常见问题解答,我已经为我的矩阵类重载了一个运算符()。这是我的班级:

class Matrix
{
    public:
    inline float& operator() (unsigned row, unsigned col)
    {
        return m[row][col];
    }
    private:
    float m[4][4];
};

现在我可以像这样在主函数中使用它:

int main()
{
    Matrix matrix;
    std::cout << matrix(2,2);
}

但现在我想像这样用指针使用它:

int main()
{
    Matrix matrix;
    Matrix* pointer = &matrix;
    std::cout << pointer(2,2);
}

并且编译器告诉指针不能用作函数。有什么解决办法吗?

你需要取消引用它:

(*pointer)(2,2)

或者,您需要通过全名呼叫接线员:

pointer->operator()(2,2)