- ベストアンサー
variant型ってどのような仕組みなのでしょうか
variant型の実装なんですけど、 以下のように struct Variant { enum TYPE { INT,CHAR, } type; union { char ch; int i; }; }; こんな感じで作れると思いますけど、これだと何か問題ありますでしょうか? boostやMFCで用意されているvariant型って便利な機能が追加されているだけでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
variant型を作るんですか?使うんではなくて?? variant型は既に定義されているものがあります。これに対して操作するAPIもあります。(VariantInitとかVariantCopyとか) MFCにあるCOleValiantやATLにあるCComVariantなどは、Variant型の派生クラスとして実装されているので、指摘の通り便利な機能が追加されているだけという認識でよいとおもいます。
その他の回答 (1)
- toda hiro(@hiro_knigh)
- ベストアンサー率39% (59/151)
回答No.1
お疲れ様です。 うーん、unionで実装されていますが、unionって確か中に宣言した型の中から一番サイズを取る型のサイズを固定で取っていたような気がします。 提示されているサンプルだと、charのデータを格納したいのに、intのサイズが取られてしまう。 特に文字列については格納するのに工夫が必要でしょう。 また、便利なメンバ関数も持っていたと思います。
質問者
お礼
回答ありがとうございます。 たしかにこれでは文字列とかクラスは格納できないですね。 boostのvariantも検討してみたいと思います。
お礼
回答ありがとうございます。 VARIANT型は既にあるんですか。使って見たいと思います。