こんにちは。
教えていただきたいのですが、クラスメンバ(変数)を動的に確保することは
できるのでしょうか?(一応やってみたのですが、エラーになってしまいました。)
それから、Newでの二次元配列の確保は、どうやったらよいのでしょうか?
ヘルプでもうまく探せません。
よろしくお願いします。

A 回答 (3件)

> 動的確保ですが、クラス宣言の中に


> int *p = new int;
> を書き込んだだけです。

 クラス宣言はあくまで「型情報の定義」であって、インスタンス(強いて言うならクラス型変数)が作成されるわけではありません。
 従ってakika0215さんの記述はエラーとなったわけです。
 (変数領域が確保されないのだから、newの結果を受け取れないのは当然ですよね)

> ポインタをメンバにして参照することで、回避できたのですが、
> 他にも良い方法がありましたら教えて下さい。

 動的に確保するのであれば、ポインタ型メンバを持つのが手っ取り早くてよいと思いますよ。
 ただ、この動的確保を行うのがメインとなるクラスでないのであれば、動的確保とその領域へのアクセスを行うためだけのクラスを書いて、そのオブジェクトをメンバに持つようにするとよいかと思います。
    • good
    • 0
この回答へのお礼

再度ご回答いただきましてありがとうございます。
とても勉強になりました。
またどうぞよろしくお願いいたします。

お礼日時:2001/06/26 00:21

∇動的確保について(補足要求)


 どのようなコードを書いたらエラーになったのでしょう?

∇二次元配列の確保について
  const int col = 10;
  int (*p)[col];   //「要素をcol個持つint型の配列」への「ポインタp」の宣言
  int row;

  cin >> row;
  p = new int[row][col];

  for (int ir = 0; ir < row; ir++) {
    for (int ic = 0; ic < col; ic++) {
      p[ir][ic] = ir * col + ic;
      cout << p[ir][ic] << ends;
    }
    cout << endl;
  }

  delete [ ] p;

 これではダメですか?
※1次元以外の次元は定数にする必要があります。
(ブラウザ上で見やすくするため、全角spaceを入れています。コピペする場合、注意して下さい。)

この回答への補足

こんにちは。ご回答ありがとうございます。

動的確保ですが、クラス宣言の中に
int *p = new int;
を書き込んだだけです。
想像がつかなかったので、ただ単純にやってしまいました。
ポインタをメンバにして参照することで、回避できたのですが、
他にも良い方法がありましたら教えて下さい。

補足日時:2001/06/23 13:55
    • good
    • 0

ポインタをクラスメンバにしておいて、


newが返すポインタをそこに入れる、
というのでだめですか?

class Integers {
 public:
  Integers() : ip(0) { }
  ~Integers() { if( ip != 0 ) delete[] ip; }

  allocate(int n){ ip = new int[n]; }

 private:
  int *ip;
};


2次元配列の確保は、こんな感じでどうでしょう?

int (*twodim)[CNUM]
 = reinterpret_cast<int (*)[CNUM]>(new int [CNUM * RNUM]);

CNUMとRNUMは列数、行数を表す定数です。
CNUM*RNUM個のintを確保して、
CNUM個のintをひとまとめにして指すポインタに
castして代入しています。

これで、twodim[1]は2行目のint配列の先頭を指すポインタになるので、
twodim[1][2]で、2行目の第3列目の要素を指します。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
教えて頂いたように、ポインタをメンバにすることで
対応できました。
二次元配列のほうも、いけそうです。
本当にありがとうございました。
またよろしくお願いいたします。

※昨日のうちにお礼を書き込みしたのですが、
 うまく送信できていなかったみたいです。
 遅くなってすみません。

お礼日時:2001/06/23 14:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード


人気Q&Aランキング

おすすめ情報

カテゴリ