CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

c++标准中有没有什么地方提供了varant变量,就是像vb那样的,?vc中有没有?

楼主huangsui(呆呆虫)2003-02-03 21:01:19 在 C/C++ / C语言 提问

c++标准中有没有什么地方提供了varant变量,就是像vb那样的,?  
  vc中有没有?   cb中好像是有的 问题点数:30、回复次数:16Top

1 楼titi_lima(titilima(李马)的马甲.net)回复于 2003-02-03 21:09:52 得分 0

你可以用union自己造一个啊   ^_^Top

2 楼huangsui(呆呆虫)回复于 2003-02-03 22:01:20 得分 0

upTop

3 楼OpenGLPrimer(大水雷)回复于 2003-02-03 22:45:23 得分 0

没有,自己写一个class吧~~~Top

4 楼micropentium6(小笨|曾经的美好)回复于 2003-02-04 12:05:10 得分 0

当然有,而且更强大,那就是模板template:)Top

5 楼rivershan(阿门)回复于 2003-02-04 12:53:56 得分 0

没有Top

6 楼robbie24(独行虾)回复于 2003-02-04 13:02:25 得分 0

这种东西C++不需要~  
  Top

7 楼IceboundRock()回复于 2003-02-04 13:22:28 得分 0

vc里面是有的  
  标准c++里面就没有了  
  具体情况你可以参考msdnTop

8 楼MagiSu(为GPA奋斗中……)回复于 2003-02-04 14:16:03 得分 0

templateTop

9 楼huangsui(呆呆虫)回复于 2003-02-05 10:38:05 得分 0

upTop

10 楼huangsuixp(不是编程浪子)回复于 2003-02-05 10:50:49 得分 30

我有篇东西,发给你!Top

11 楼fanyufanyu(反语)回复于 2003-02-05 19:05:06 得分 0

就算是有吧   void   *这个万能指针。Top

12 楼flashsj()回复于 2003-02-05 20:44:46 得分 0

没有  
  为什么要那样作那?  
  最好指明变量类型Top

13 楼IceboundRock()回复于 2003-02-05 20:58:08 得分 0

摘自MSDN  
  VARIANT   and   VARIANTARG  
  Use   VARIANTARG   to   describe   arguments   passed   within   DISPPARAMS,   and   VARIANT   to   specify   variant   data   that   cannot   be   passed   by   reference.   The   VARIANT   type   cannot   have   the   VT_BYREF   bit   set.   VARIANTs   can   be   passed   by   value,   even   if   VARIANTARGs   cannot.  
   
  typedef   struct   FARSTRUCT   tagVARIANT   VARIANT;  
  typedef   struct   FARSTRUCT   tagVARIANT   VARIANTARG;  
   
  typedef   struct   tagVARIANT     {  
          VARTYPE   vt;  
          unsigned   short   wReserved1;  
          unsigned   short   wReserved2;  
          unsigned   short   wReserved3;  
          union   {  
                  unsigned   char                 bVal;                                                 //   VT_UI1.  
                  short                                         iVal;                                                 //   VT_I2         .  
                  long                                         lVal;                                                 //   VT_I4         .  
                  float                                         fltVal;                                         //   VT_R4         .  
                  double                                 dblVal;                                         //   VT_R8         .  
                  VARIANT_BOOL                 boolVal;                                                 //   VT_BOOL.  
                  SCODE                                         scode;                                         //   VT_ERROR.  
                  CY                                                 cyVal;                                         //   VT_CY         .  
                  DATE                                         date;                                                 //   VT_DATE.  
                  BSTR                                         bstrVal;                                         //   VT_BSTR.  
                  IUnknown                                 FAR*   punkVal;                         //   VT_UNKNOWN.  
                  IDispatch                           FAR*   pdispVal;                         //   VT_DISPATCH.  
                  SAFEARRAY                         FAR*   parray;                         //   VT_ARRAY|*.  
                  unsigned   char                 FAR*   pbVal;                                 //   VT_BYREF|VT_UI1.  
                  short                                         FAR*   piVal;                                 //   VT_BYREF|VT_I2.  
                  long                                         FAR*   plVal;                                 //   VT_BYREF|VT_I4.  
                  float                                         FAR*   pfltVal;                         //   VT_BYREF|VT_R4.  
                  double                                 FAR*   pdblVal;                         //   VT_BYREF|VT_R8.  
                  VARIANT_BOOL                 FAR*   pboolVal;                                 //   VT_BYREF|VT_BOOL.  
                  SCODE                                         FAR*   pscode;                         //   VT_BYREF|VT_ERROR.  
                  CY                                                 FAR*   pcyVal;                         //   VT_BYREF|VT_CY.  
                  DATE                                         FAR*   pdate;                                 //   VT_BYREF|VT_DATE.  
                  BSTR                                         FAR*   pbstrVal;                         //   VT_BYREF|VT_BSTR.  
                  IUnknown   FAR*                 FAR*   ppunkVal;                         //   VT_BYREF|VT_UNKNOWN.  
                  IDispatch   FAR*                 FAR*   ppdispVal;                 //   VT_BYREF|VT_DISPATCH.  
                  SAFEARRAY   FAR*                 FAR*   pparray;                         //   VT_ARRAY|*.  
                  VARIANT                                 FAR*   pvarVal;                         //   VT_BYREF|VT_VARIANT.  
                  void                                         FAR*   byref;                                 //   Generic   ByRef.  
          };  
  };  
     
  To   simplify   extracting   values   from   VARIANTARGs,   Automation   provides   a   set   of   functions   for   manipulating   this   type.   Use   of   these   functions   is   strongly   recommended   to   ensure   that   applications   apply   consistent   coercion   rules.  
   
  The   vt   value   governs   the   interpretation   of   the   union   as   follows:  
   
  Value   Description    
  VT_EMPTY   No   value   was   specified.   If   an   optional   argument   to   an   Automation   method   is   left   blank,   do   not   pass   a   VARIANT   of   type   VT_EMPTY.   Instead,   pass   a   VARIANT   of   type   VT_ERROR   with   a   value   of   DISP_E_PARAMNOTFOUND.    
  VT_EMPTY   |   VT_BYREF   Not   valid.    
  VT_UI1   An   unsigned   1-byte   character   is   stored   in   bVal.    
  VT_UI1   |   VT_BYREF   A   reference   to   an   unsigned   1-byte   character   was   passed.   A   pointer   to   the   value   is   in   pbVal.    
  VT_I2   A   2-byte   integer   value   is   stored   in   iVal.    
  VT_I2   |   VT_BYREF   A   reference   to   a   2-byte   integer   was   passed.   A   pointer   to   the   value   is   in   piVal.    
  VT_I4   A   4-byte   integer   value   is   stored   in   lVal.    
  VT_I4   |   VT_BYREF   A   reference   to   a   4-byte   integer   was   passed.   A   pointer   to   the   value   is   in   plVal.    
  VT_R4   An   IEEE   4-byte   real   value   is   stored   in   fltVal.    
  VT_R4   |   VT_BYREF   A   reference   to   an   IEEE   4-byte   real   value   was   passed.   A   pointer   to   the   value   is   in   pfltVal.    
  VT_R8   An   8-byte   IEEE   real   value   is   stored   in   dblVal.    
  VT_R8   |   VT_BYREF   A   reference   to   an   8-byte   IEEE   real   value   was   passed.   A   pointer   to   its   value   is   in   pdblVal.    
  VT_CY   A   currency   value   was   specified.   A   currency   number   is   stored   as   an   8-byte,   two's   complement   integer,   scaled   by   10,000   to   give   a   fixed-point   number   with   15   digits   to   the   left   of   the   decimal   point   and   4   digits   to   the   right.   The   value   is   in   cyVal.    
  VT_CY   |   VT_BYREF   A   reference   to   a   currency   value   was   passed.   A   pointer   to   the   value   is   in   pcyVal.    
  VT_BSTR   A   string   was   passed;   it   is   stored   in   bstrVal.   This   pointer   must   be   obtained   and   freed   by   the   BSTR   functions,   which   are   described   in   Chapter   7,   "Conversion   and   Manipulation   Functions."      
  VT_BSTR   |   VT_BYREF   A   reference   to   a   string   was   passed.   A   BSTR*   that   points   to   a   BSTR   is   in   pbstrVal.   The   referenced   pointer   must   be   obtained   or   freed   by   the   BSTR   functions.    
  VT_NULL   A   propagating   null   value   was   specified.   (This   should   not   be   confused   with   the   null   pointer.)   The   null   value   is   used   for   tri-state   logic,   as   with   SQL.    
  VT_NULL   |   VT_BYREF   Not   valid.    
  VT_ERROR   An   SCODE   was   specified.   The   type   of   the   error   is   specified   in   scodee.   Generally,   operations   on   error   values   should   raise   an   exception   or   propagate   the   error   to   the   return   value,   as   appropriate.    
  VT_ERROR   |   VT_BYREF   A   reference   to   an   SCODE   was   passed.   A   pointer   to   the   value   is   in   pscode.    
  VT_BOOL   A   Boolean   (True/False)   value   was   specified.   A   value   of   0xFFFF   (all   bits   1)   indicates   True;   a   value   of   0   (all   bits   0)   indicates   False.   No   other   values   are   valid.    
  VT_BOOL   |   VT_BYREF   A   reference   to   a   Boolean   value.   A   pointer   to   the   Boolean   value   is   in   pbool.    
  VT_DATE   A   value   denoting   a   date   and   time   was   specified.   Dates   are   represented   as   double-precision   numbers,   where   midnight,   January   1,   1900   is   2.0,   January   2,   1900   is   3.0,   and   so   on.   The   value   is   passed   in   date.  
  This   is   the   same   numbering   system   used   by   most   spreadsheet   programs,   although   some   specify   incorrectly   that   February   29,   1900   existed,   and   thus   set   January   1,   1900   to   1.0.   The   date   can   be   converted   to   and   from   an   MS-DOS   representation   using   VariantTimeToDosDateTime,   which   is   discussed   in   Chapter   7,   "Conversion   and   Manipulation   Functions."    
     
  VT_DATE   |   VT_BYREF   A   reference   to   a   date   was   passed.   A   pointer   to   the   value   is   in   pdate.    
  VT_DISPATCH   A   pointer   to   an   object   was   specified.   The   pointer   is   in   pdispVal.   This   object   is   known   only   to   implement   IDispatch.   The   object   can   be   queried   as   to   whether   it   supports   any   other   desired   interface   by   calling   QueryInterface   on   the   object.   Objects   that   do   not   implement   IDispatch   should   be   passed   using   VT_UNKNOWN.    
  VT_DISPATCH   |   VT_BYREF   A   pointer   to   a   pointer   to   an   object   was   specified.   The   pointer   to   the   object   is   stored   in   the   location   referred   to   by   ppdispVal.    
  VT_VARIANT   Invalid.   VARIANTARGs   must   be   passed   by   reference.    
  VT_VARIANT   |   VT_BYREF   A   pointer   to   another   VARIANTARG   is   passed   in   pvarVal.   This   referenced   VARIANTARG   will   never   have   the   VT_BYREF   bit   set   in   vt,   so   only   one   level   of   indirection   can   ever   be   present.   This   value   can   be   used   to   support   languages   that   allow   functions   to   change   the   types   of   variables   passed   by   reference.    
  VT_UNKNOWN   A   pointer   to   an   object   that   implements   the   IUnknown   interface   is   passed   in   punkVal.    
  VT_UNKNOWN   |   VT_BYREF   A   pointer   to   the   IUnknown   interface   is   passed   in   ppunkVal.   The   pointer   to   the   interface   is   stored   in   the   location   referred   to   by   ppunkVal.    
  VT_ARRAY   |   <anything>   An   array   of   data   type   <anything>   was   passed.   (VT_EMPTY   and   VT_NULL   are   invalid   types   to   combine   with   VT_ARRAY.)   The   pointer   in   pbyrefVal   points   to   an   array   descriptor,   which   describes   the   dimensions,   size,   and   in-memory   location   of   the   array.   The   array   descriptor   is   never   accessed   directly,   but   instead   is   read   and   modified   using   the   functions   described   in   Chapter   7,   "Conversion   and   Manipulation   Functions."      
   
   
     
  Top

14 楼huangsui(呆呆虫)回复于 2003-02-06 10:29:01 得分 0

upTop

15 楼huangsui(呆呆虫)回复于 2003-02-06 19:11:17 得分 0

upTop

16 楼huangsui(呆呆虫)回复于 2003-02-07 08:56:05 得分 0

upTop

相关问题

  • VB、Delphi、C++Builder、VC++之争!
  • 会VB,JAVA,C++,怎么看不懂VC
  • VB VC C# 我怎么选择?
  • VB VC C# 我怎么选择?
  • C+VB?
  • vb to c#
  • 请问:vb,vb.net,vc,vc++,Delphi,C,C++,jsp等语言各有什么作用?
  • C++? VC++? C++ Builder?
  • C -> C++ -> VC?
  • 以下学习方法那个“收获-时间”比最大:(A)VB->BCB->VC (B)VB->VC (C)VB->Delphi->BCB->VC (D)VB->VB->VB->...

关键词

  • c++
  • vc
  • 变量
  • vt
  • tagvariant
  • variantarg
  • variant
  • 标准
  • short wreserved
  • 中有没有

得分解答快速导航

  • 帖主:huangsui
  • huangsuixp

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo