はじめまして。
初めて質問させていただきます。
double (**test)[2]
といったものの配列を作成させる場合、newを用いたらどのように記述すればよいかを教えてください。
ちなみにmallocをもちいたら
test = (double(**)[2])malloc(3*sizeof(double(*)[2]));
とやれば配列は確保できることは確認しています。
現在、この問題についての解決策として
1.構造体にする。
2.この部分のみmallocにて確保する。
といったことがあげられるのですが、できればこの引数のまま使用したいと考えています。
よろしくお願いします。
typedefするのが一番楽かな、と。
typedef double (*test_type)[2];
test_type* test = new test_type[3];
ちょっと悩んだ... IS を読み直したです
ISO/IEC 14882:1998 5.3.4 Expression-new の 3 から意訳
Compound type に () が含まれる場合に new がびっくりする結果を返すことがある
new int (*[10])(); は (new int) (*[10]) (); と結合されるのでエラー
というわけで typedef を使いたくないのであればこうなるはず
double (**test)[2]=new (double (*[3])[2]);
# new 要素数が先に出るのがアレげ
当然認識されていると思いますがこれだけでは「配列へのポインタの配列」があるだけ。
ポインタが指す先の配列は無いので注意、っと。
皆様、色々とご親切にありがとうございました。
おかげでうまくnewにて配列作成をすることができました。
これからもC++を邁進していきたいと思います。
ツイート | ![]() |