new について質問です。
newを使ってポインタを二次元配列に変換することはできないのでしょうか?
例:
DWORD dw = new DWORD[h][w];
と、いった形にいたいのですがエラーになってしまいます。
BCCにてコンパイルしているのですが、
'unsigned long ( *)[1]'型は'unsigned long *'型に変換できない
と、エラーになってしまいます。
関連スレ
http://www.mtakahashi.com/bbs.htm
間違えてフレームのURLをはってしまいました。
訂正
http://www.mtakahashi.com/cgi.cgi?13171
> newを使ってポインタを二次元配列に変換することはできないのでしょうか?
何がしたいのですか?
ポインタと二次元配列は完全に別物です。
> DWORD dw = new DWORD[h][w];
> と、いった形にいたいのですがエラーになってしまいます。
そりゃあ……。
このnewの戻り値の型は,DWORD (*)[w]です。
しかし,宣言されているオブジェクトはDWORD型ですから,型が一致していません。
この行は
DWORD (*dw)[w] = new DWORD[h][w];
と書く必要があります。
また,wが整定数でないのであれば,newの使い方自体が間違っていることになります。
回答ありがとうございます。
DWORD(*)[w]が返ってくるのですね。
↑の文もちょっと間違えてました。
DWORD *dw = new DWORD[h][w];
と、してたのでした。
どっちにしろエラーなわけですが。。。
さらにちょっと質問なのですが、
(*)[w]に関してポインタに対して配列になるんですね。
これってどういうことになるんでしょうか?
DWORD (*)[w]
は,
【『「DWORD」型を要素とする,w個からなる配列』型へのポインタ】型です。
DWORD *[w]
が,
【『「DWORD」型へのポインタ』型を要素とする,w個からなる配列】型になります。
なるほど。
的確な説明助かります。
これで解決させてもらいます。
ツイート | ![]() |