2

このサイトのC++FAQに従うことで、Matrixクラスのoperator()をオーバーロードしました。これは私のクラスです:

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

    private:
    float m[4][4];
};

これで、次のようなmain関数で使用できます。

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

しかし今、私は次のようなポインタでそれを使用したいと思います:

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

コンパイラは、ポインタを関数として使用できないことを通知します。解決策はありますか?

4

1 に答える 1

8

逆参照する必要があります:

(*pointer)(2,2)

または、フルネームでオペレーターを呼び出す必要があります。

pointer->operator()(2,2)
于 2012-12-14T12:36:06.370 に答える