ページ 11

operatorについて

Posted: 2010年3月09日(火) 18:16
by ジュンヤ
「ゲームプログラマになる前に覚えておきたい技術」という本で勉強しているのですが、
わからない部分があったので、質問させていただきます。
template< class T > class Array2D{
public:
    Array2D() : mArray( 0 ){}
    ~Array2D(){
        delete[/url] mArray;
        mArray = 0;
    }
    void setSize( int size0, int size1 ){
        mSize0 = size0;
        mSize1 = size1;
        mArray = new T[ size0 * size1 ];
    }
    T& operator()( int index0, int index1 ){
        return mArray[ index1 * mSize0 + index0 ];
    }
    const T& operator()( int index0, int index1 ) const {
        return mArray[ index1 * mSize0 + index0 ];
    }
private:
    T* mArray;
    int mSize0;
    int mSize1;
};


このクラスで、operatorが使われている部分の
T& operator()( int index0, int index1 ){
    return mArray[ index1 * mSize0 + index0 ];
}
const T& operator()( int index0, int index1 ) const {
    return mArray[ index1 * mSize0 + index0 ];
}
と定義されているメンバ関数は、どの様な意味になるのかわかりません。
この場合のoperatorは、演算子のオーバーロードとは、まったく関係ないのでしょうか?
どなたか知っている方がいましたら、よろしくお願いします。

Re:operatorについて

Posted: 2010年3月09日(火) 18:25
by たかぎ
これは関数呼出し演算子の多重定義です。
ファンクタ(関数オブジェクト)を作るために定義しています。

Re:operatorについて

Posted: 2010年3月09日(火) 18:43
by fatens
23・24ページにどのように使えるか説明があります。
既読でしたら無視してください。

Re:operatorについて

Posted: 2010年3月10日(水) 17:40
by ジュンヤ
関数呼出し演算子の存在を知りませんでした。
おかげ様で調べることができました。
たかぎさん、fatensさん
ありがとうございました。