テンプレートは確かにここでお手伝いします。これらは、すべてのタイプで同じ処理の繰り返しを減らす方法を提供します。
「使用すべきかどうか」ということは、残念なことですがどちらも意見の問題ですが、一般的な使用はただ1つの変数の使用がそれを決める。
異なるタイプを含むファイルの内容を同じコンテナに処理する必要がある場合、またはファイルに複数のタイプが含まれる場合は、多分ブーストバリアントが適しています。
ファイルから型を読み込むので、これらの型は実行時に認識されますが、コンパイル時にオプションのリストがわかっているので、ファイルの型をチェックして型を渡すことができます。
if(typeFromFile == headerValueForint)
{
processFile<int>();
}
else if (typeFromFile == headerValueFordouble)
{
processFile<double>();
}
しかし、あなたが一覧表示すべてのタイプが数値です(と私は、他の非数値型があるかどう処理は実際には同じことができるか疑問に思う)として、あなたはダブルスとしてのすべての値を読み取るために決めることができました - と適切な範囲チェック。より多くのメモリを消費するかもしれませんが、その影響は処理に実際に関係するものによって異なります。
出典
2016-05-04 17:37:01
ROX
'これを行うにはテンプレートを使用する必要がありますか? 「あなたの前の他の選択肢は何ですか? – sjsam
私は分かりません。たぶんvoidポインタを宣言し、必要なメモリを割り当て、生データをコピーして、データ型にポインタの基底をキャストするだけです。 それは本当にきれいではありませんが、ただ1つの変数が最適でないテンプレートを使用するように感じます。それは...ですか ? – whiteShadow
'boost :: variant' - ホイールを再開発する必要はありません。 –