• ベストアンサー

variant型ってどのような仕組みなのでしょうか

variant型の実装なんですけど、 以下のように struct Variant {  enum TYPE {   INT,CHAR,  } type;  union {   char ch;   int i;  }; }; こんな感じで作れると思いますけど、これだと何か問題ありますでしょうか? boostやMFCで用意されているvariant型って便利な機能が追加されているだけでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • reset_cat
  • ベストアンサー率68% (94/138)
回答No.2

variant型を作るんですか?使うんではなくて?? variant型は既に定義されているものがあります。これに対して操作するAPIもあります。(VariantInitとかVariantCopyとか) MFCにあるCOleValiantやATLにあるCComVariantなどは、Variant型の派生クラスとして実装されているので、指摘の通り便利な機能が追加されているだけという認識でよいとおもいます。

参考URL:
http://msdn.microsoft.com/ja-jp/library/ms221627(v=VS.80).aspx
noname#115727
質問者

お礼

回答ありがとうございます。 VARIANT型は既にあるんですか。使って見たいと思います。

その他の回答 (1)

回答No.1

お疲れ様です。 うーん、unionで実装されていますが、unionって確か中に宣言した型の中から一番サイズを取る型のサイズを固定で取っていたような気がします。 提示されているサンプルだと、charのデータを格納したいのに、intのサイズが取られてしまう。 特に文字列については格納するのに工夫が必要でしょう。 また、便利なメンバ関数も持っていたと思います。

noname#115727
質問者

お礼

回答ありがとうございます。 たしかにこれでは文字列とかクラスは格納できないですね。 boostのvariantも検討してみたいと思います。

関連するQ&A

専門家に質問してみよう