operatorについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ジュンヤ

operatorについて

#1

投稿記事 by ジュンヤ » 15年前

「ゲームプログラマになる前に覚えておきたい技術」という本で勉強しているのですが、
わからない部分があったので、質問させていただきます。
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について

#2

投稿記事 by たかぎ » 15年前

これは関数呼出し演算子の多重定義です。
ファンクタ(関数オブジェクト)を作るために定義しています。

fatens

Re:operatorについて

#3

投稿記事 by fatens » 15年前

23・24ページにどのように使えるか説明があります。
既読でしたら無視してください。

ジュンヤ

Re:operatorについて

#4

投稿記事 by ジュンヤ » 15年前

関数呼出し演算子の存在を知りませんでした。
おかげ様で調べることができました。
たかぎさん、fatensさん
ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る