回答編集履歴
1
誤字修正
test
CHANGED
@@ -1,5 +1,9 @@
|
|
1
|
-
一言で言うと、CとC++は別の言語であり、完全な上位互換ではないからです。CでコンパイルできるコードがC++ではできないということはよくありますが、その原因の1つに、void型のポインタから任意の型のポインタへの暗黙の型変換がC++では採用されなかったというのがあります。C++で同じことをする場合、キャストをする必要が出てきます。今回の場合、
|
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のコンテナを利用すれば、これらに依存しないコードも書けますよ。
|