Operator()作为Matrix类的下标

Tom*_*Tom 2 c++ operator-overloading matrix

通过这个站点C++ FAQ我已经为我的Matrix类重载了一个operator().这是我的班级:

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

    private:
    float m[4][4];
};
Run Code Online (Sandbox Code Playgroud)

现在我可以在主函数中使用它,如下所示:

int main()
{
    Matrix matrix;
    std::cout << matrix(2,2);
}
Run Code Online (Sandbox Code Playgroud)

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

int main()
{
    Matrix matrix;
    Matrix* pointer = &matrix;
    std::cout << pointer(2,2);
}
Run Code Online (Sandbox Code Playgroud)

和compilator告诉指针不能用作函数.有什么解决方案吗?

Jos*_*eld 8

你要么需要取消引用它:

(*pointer)(2,2)
Run Code Online (Sandbox Code Playgroud)

或者您需要通过其全名呼叫运营商:

pointer->operator()(2,2)
Run Code Online (Sandbox Code Playgroud)