reinterpret_castのトピックについて書かれた行がたくさんあり、それがどれほど悪いか、特にfstreamからの読み取りや書き込みなどの関数を扱う場合は、それを回避するための最善の方法にまだ戸惑っています。だから、ここに私のジレンマがあります...
ファイルからのデータを入力したい整数配列があるとしましょう。
std::ifstream iFile( ... );
// presume that the type of this array is not a matter of choice
int *a = new int[ 100 ];
いくつかの異なるキャストで読むことができます:
iFile.read( (char *)a, sizeof( int ) * 100 );
iFile.read( reinterpret_cast< char * >( a ), sizeof( int ) * 100 );
iFile.read( static_cast< char * >( static_cast< void * >( ( a ) ), sizeof( int ) * 100 );
最初のもの(Cスタイル)は時代遅れであり、正当な理由でC++で導入された新しいスタイルのキャストです。2つ目は移植性がなく、保証はありません。3つ目は、書くのが面倒で、楽しみを台無しにします。
これに代わるものはありますか?どうすればよいですか?
編集:
目標は、コードを可能な限り移植可能で標準に準拠するようにすることです。