Operator()作为Matrix类的下标

时间:2012-12-14 12:33:33

标签: c++ matrix operator-overloading

通过关注此网站C++ FAQ,我为我的Matrix类重载了一个operator()。这是我的班级:

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);
}

和compilator告诉指针不能用作函数。有没有解决方案?

1 个答案:

答案 0 :(得分:8)

您需要取消引用它:

(*pointer)(2,2)

或者您需要以全名调用运营商:

pointer->operator()(2,2)