プロが教えるわが家の防犯対策術!

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

A 回答 (2件)

variant型を作るんですか?使うんではなくて??



variant型は既に定義されているものがあります。これに対して操作するAPIもあります。(VariantInitとかVariantCopyとか)

MFCにあるCOleValiantやATLにあるCComVariantなどは、Variant型の派生クラスとして実装されているので、指摘の通り便利な機能が追加されているだけという認識でよいとおもいます。

参考URL:http://msdn.microsoft.com/ja-jp/library/ms221627 …
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/04/09 16:03

お疲れ様です。



うーん、unionで実装されていますが、unionって確か中に宣言した型の中から一番サイズを取る型のサイズを固定で取っていたような気がします。

提示されているサンプルだと、charのデータを格納したいのに、intのサイズが取られてしまう。

特に文字列については格納するのに工夫が必要でしょう。
また、便利なメンバ関数も持っていたと思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/04/09 16:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!