ページ 11

1次元配列を2次元的に使う方法

Posted: 2013年7月03日(水) 12:51
by Hashimoto
コード、

コード:

//(x,y)にアクセス
a[y*width + x]
はなぜ、

コード:

class IntArray2D{
public:
      IntArray2D(int size0,int size1):   //①これはなんなんですか?アクセス指定子?
   mArray(0),    //②これもなんなんですか?
   mSize0(size0),    //③これもなんなんですか?
       mSize1(size1){    //④これもなんなんですか?
           mArray = new int [size0 * size1];
   }
       ~IntArray2D(){
           delete[] mArray;
           mArray = 0;
       }
       int& operator()(int index0,int index1){
           return mArray[index1 * mSize0 + index0];    //⑤これは何を返していますか?
       }
       const int& operator()(int index0,int index1) const {
           return mArray[index1 * mSize0 + index0];     //⑥これは何を返していますか?
       }
private:
       int* mArray;
       const int mSize0;
       const int mSize1;
}; 
こうなるのでしょうか?
①~⑥を教えて下さい。

Re: 1次元配列を2次元的に使う方法

Posted: 2013年7月03日(水) 12:57
by softya(ソフト屋)
質問の内容がC++の文法の話だと思われますが、C++の勉強はされていますでしょうか?

Re: 1次元配列を2次元的に使う方法

Posted: 2013年7月03日(水) 12:59
by h2so5
①コンストラクタの仮引数リスト
②〜④初期化リスト
⑤mArray[index1][index0]の値の参照
⑥mArray[index1][index0]の値のconst参照

Re: 1次元配列を2次元的に使う方法

Posted: 2013年7月03日(水) 13:04
by softya(ソフト屋)
あっ前の質問も解決していないままですね。続きをお願いします。
「荷物を指定の場所に運ぶあのゲームについて • C言語交流フォーラム ~ mixC++ ~」
http://dixq.net/forum/viewtopic.php?f=3&t=13297#p106548
あちらでも書いたのですが、C++の勉強が本当に不十分だと思います。

Re: 1次元配列を2次元的に使う方法

Posted: 2013年7月03日(水) 13:08
by Hashimoto
C++の勉強はしています。
基礎は理解しているつもりです。
特に①~④がわかりません。(「:」とか何ですか?)

Re: 1次元配列を2次元的に使う方法

Posted: 2013年7月03日(水) 13:13
by softya(ソフト屋)
Hashimoto さんが書きました:C++の勉強はしています。
基礎は理解しているつもりです。
特に①~④がわかりません。(「:」とか何ですか?)
h2so5さんが既に書いてますが、②~④は初期化リストとか初期化子・初期化子リストと呼ばれるものです。
C++の書籍なら出てくるはずなんですけど。

あと⑤、⑥に関して補足するとC++の演算子のオーバーロードの機能を使って関数呼び出しをオーバーロードしています。

Re: 1次元配列を2次元的に使う方法

Posted: 2013年7月03日(水) 13:19
by Hashimoto
使っているのは「やさしいC++ 第4版」です。

Re: 1次元配列を2次元的に使う方法

Posted: 2013年7月03日(水) 14:05
by h2so5
「やさしいC++ 第3版」を持っていますが、ざっと見たところ初期化リストについては書かれていないみたいですね。

Re: 1次元配列を2次元的に使う方法

Posted: 2013年7月03日(水) 14:18
by Hashimoto
今、ロベール(途中・10章まで)もしているんですが、「ロベールのC++入門講座」では(これから)載っていますでしょうか?
載っていれば、ページ数を教えて下さい。

Re: 1次元配列を2次元的に使う方法

Posted: 2013年7月03日(水) 14:25
by softya(ソフト屋)
「やさしいC++」だと網羅されていない文法が多いみたいですね。
「ロベールのC++入門講座」だと初期化子は出てくると思います。検索してみたところ、11章でしょうか?
演算子のオーバーロードも有るようですが、関数呼び出しのオーバーロードについて本は持っていないので検索で確認できませんでした。
まぁ、ネットで検索できるので、そちらで調べても良いと思います。

【補足】 初期化子などで巻末のインデックスで確認できませんか?

Re: 1次元配列を2次元的に使う方法

Posted: 2013年7月03日(水) 15:05
by Hashimoto
11章には載ってませんでした。
巻末のインデックスでも確認できませんでした。
ネットでなんと検索すれば出てきますか(初期化子)?

Re: 1次元配列を2次元的に使う方法

Posted: 2013年7月03日(水) 15:33
by softya(ソフト屋)
> 11章には載ってませんでした。
検索では有るように書いてあったんですけどね。インデックスに載らないレベルなんでしょうか。

ネットでは初期化子で検索すれば出てきますね。
要は、コンストラクタでの初期化をするための書き方です。
クラスの引数付きのインスタンスの初期化など特殊な事はここでしか出来ません。
「コンストラクタ」
http://www.02.246.ne.jp/~torutk/cxx/constructor/

Re: 1次元配列を2次元的に使う方法

Posted: 2013年7月03日(水) 18:39
by usao
「メンバイニシャライザ」でどうでしょうか.検索ワード.

Re: 1次元配列を2次元的に使う方法

Posted: 2013年7月04日(木) 12:24
by Hashimoto
すいません。11章に載ってました。