回答編集履歴

1

誤字修正

2017/05/20 22:18

投稿

majiponi
majiponi

スコア1720

test CHANGED
@@ -1,5 +1,9 @@
1
- 一言で言うと、CとC++は別の言語であり、完全な上位互換ではないからです。CでコンパイルできるコードがC++ではできないということはよくありますが、その原因の1つに、void型のポインタから任意の型のポインタへの暗黙の型変換がC++では採用されなかったというのがあります。C++で同じことをする場合、キャストをする必要が出てきます。今回の場合、shironianさんの示す「reinterpret_cast」で変換…する必要はありません。
1
+ 一言で言うと、CとC++は別の言語であり、完全な上位互換ではないからです。CでコンパイルできるコードがC++ではできないということはよくありますが、その原因の1つに、void型のポインタから任意の型のポインタへの暗黙の型変換がC++では採用されなかったというのがあります。C++で同じことをする場合、キャストをする必要が出てきます。今回の場合、Chironianさんの示す「reinterpret_cast」で変換…する必要はありません。
2
2
 
3
3
 
4
4
 
5
5
  キャストは悪です(暴論)。避けられるなら避けるべきです。mallocを使用する場面で、との相談でしたが、C++では言語機能として、new/deleteによるメモリ確保/解放ができるので、mallocを使う必要はありません。
6
+
7
+
8
+
9
+ 追記: さらに言えば、new/deleteも避けるべきです。STLのコンテナを利用すれば、これらに依存しないコードも書けますよ。