又是一套类型。
谁能告诉我什么情况下需要使用什么类型。
我只熟悉C/C++的类型。

解决方案 »

  1.   

    API要用BSTR SAFEARRAY类型就用上面的类型
    因为CComBSTR是BSTR的封装,能够自己管理资源
      

  2.   

    com之所以要用这样的类型时因为这样可以跨语言。
      

  3.   

    晕Ccombstr,CComSafeArray,CComVariant属于C++包装类而已
    BSTR SAFEARRAY是IDL的数据类型,是COM的规范
    写COM必须遵守COM的规范(二进制标准)
      

  4.   

    也可以用long ,short之类的
    看你的需求
      

  5.   

    bstr,safearray都是ole类型,所有支持ole类型的语言(vb,脚本)的运行库或解释器都可以相应的处理这些类型并通过这些类型进行交互,variant类型兼容的类型都是ole类型。
    当你的程序(COM)需要跨语言交互时(比如vc写的程序给vb用),请务必保证接口函数的参数类型是ole类型,即有auto或doul属性的接口(支持dispatch的接口)要保证函数参数是ole类型,这样做的另一个好处是可以使用默认的标准列集器进行参数列集。
    如果你用C++写的com组件只供给C++程序使用就没有这种限制了,C++支持的类型和结构都可以作参数。
      

  6.   

    楼主,你要明白COM思想是什么,虽说它没规定必须要用,但是我认为我们自己应该“强迫”我们自己必须要用!为什么这么说呢?因为,COM的本意就是:把我们从原始的,各自为政的编程方式方法中"解救"出来,让我们大家都进入一个具有相同游戏规则的,法制的编程社会。同荣共辱。举个简单例子,比如说你用bstr,他用bstr,她也用bstr,甚至连它也用bstr,那我们将来的程序在处理字符串上是绝对一致的,至少在方法上是这样,我的程序你可以看懂,你的程序我也可以用!
      

  7.   

    个人认为,COM的数据类型是制约它推广和使用的一个软肋,比较晦涩,跟C++的数据类型差异太大