私はこのようになりますクラスを持っていますこの種のことを処理するストア任意の値とクラスの特定の範囲の値が
Physical_componentがことができるようになります。店の種類の設定量、および完全にタイプを保持(私はにキャストすることができます何かが十分です)
- それらは個別のものから渡されたものです(したがって、orignialクラスへの変更から保護されています)
私はenumと並んでcでexcistingのようなものを覚えていますが、私はその名前を知らない。また、C++にはおそらくもっと良い方法があります。
Storage_componentをすることになっている:
- ストア任意のタイプ
- (オプション)私はこれを適切に達成するためにどのようには考えている元の型
を覚えています。私はstd :: anyを見ましたが、それはむしろ新しいので、私は知っていないようです。また、ベクトルに格納することができないので、storage_componentをテンプレートにすることはできません。
これらのクラスを実装するにはどのような方法がありますか?
あなたのコンパイラとライブラリがC++ 17(['std :: any'](http://en.cppreference.com/w/cpp/utility/any)を導入した最新版でない場合)おそらく[Boost any](http://www.boost.org/doc/libs/1_65_1/doc/html/any.html)?あるいは、おそらく['std :: variant'](http://en.cppreference.com/w/cpp/utility/variant)(またはその[Boost equivalent](http://www.boost.org/doc/libs) /1_65_1/doc/html/variant.html))。あるいは、要件分析をチェックし、そのようなタイプ消去がデザインに必要でないことを確認してください。おそらくそれは他の方法で解決できるでしょうか? –
@Someprogrammerdudeなぜ人々はboost :: btwを使用しますか?私はどこにでも見ていますか?すべてのstd :: functionsが含まれているか、実際にはより速く/より速いからですか?ここで何が起こっているのですか? ありがとうございます。私はstdの外部リソース::すべての実装が正常に動作するように見えた。私はあまり気にしないと思います。 – MoustacheSpy
標準ライブラリの機能の一部、または標準ライブラリの将来のバージョンで提供される機能のいくつかは、Boostライブラリで開始されました。例えばBoost any。 'std :: any'のために十分新しいコンパイラを持っていなければ、Boost anyが適切な置換えです。 [Boost](http://www.boost.org/)は単一のライブラリではなく、多くのライブラリのコレクション*です。いくつかは、標準ライブラリの動作を複製しますが、多くの場合* * *以上のものもあります。 –