アカウント名:
パスワード:
そもそも C++ には const_cast なるものがあるんだけど、それはどうするつもりなんだろうか。
const_cast が分かってない人って
void hoge(char*);
void piyo(const char* ptr){ hoge(const_cast<char*>(ptr));}
とかやりたいときってどーすんの?ヨソが作った関数 hoge は引数で与えられたポインタの指す内容を参照するだけで書き込まない仕様だけどもヘッダに書かれた関数プロトタイプ宣言ではなんでか const が付いてなくて、責任問題切り分けの理由でヘッダ書き換えたくないけど使わざるを得ない状況なんて普通にあると思うけども。
まあそんな理由でわざわざconst_castなんてものを作ったわけだけど、constを外したポインタの扱いはコードを書いた者が責任を持つことになるわけで、コンパイラなどでは書き込むとどうなるか保証されていない。問題になってるのはconst_cast自体ではなくconst_castしたものへの書き込みの方。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
皆さんもソースを読むときに、行と行の間を読むような気持ちで見てほしい -- あるハッカー
const_cast (スコア:0)
そもそも C++ には const_cast なるものがあるんだけど、
それはどうするつもりなんだろうか。
Re: (スコア:0)
const_cast が分かってない人って
void hoge(char*);
void piyo(const char* ptr)
{
hoge(const_cast<char*>(ptr));
}
とかやりたいときってどーすんの?
ヨソが作った関数 hoge は引数で与えられたポインタの指す内容を参照するだけで書き込まない仕様だけどもヘッダに書かれた関数プロトタイプ宣言ではなんでか const が付いてなくて、責任問題切り分けの理由でヘッダ書き換えたくないけど使わざるを得ない状況なんて普通にあると思うけども。
Re:const_cast (スコア:0)
まあそんな理由でわざわざconst_castなんてものを作ったわけだけど、constを外したポインタの扱いはコードを書いた者が責任を持つことになるわけで、コンパイラなどでは書き込むとどうなるか保証されていない。
問題になってるのはconst_cast自体ではなくconst_castしたものへの書き込みの方。