我想实现的借口函数是这个样子
fun(BSTR bstrName,BSTR *pValue);
fun(short nIndex,BSTR * pValue);
创建时提示fun已经存在,不可以创建,怎么办,难道非要换个名字么?

解决方案 »

  1.   

    fun2(short nIndex,BSTR * pValue);
      

  2.   

    不可重载,但可实现伪重载. 因为你可以使用VARIANT 类型的变量,这样的变量可以传入 各种类型的值,然后你只要在函数的实现里判断一下数据类型然后选择不同的处理方式就行了HRESULT CMyClass::fun(VARIANT Index,BSTR * pValue)
    {
        if(Index->vt == VT_BSTR)
        {
           // 这样处理.
           .....
           return S_OK;
        }
        else if(Index->vt==VT_I2)
        {
           // 那样处理
           ...
           return S_OK;
        }
        else 
          return E_INVALIDARG;   // 无效的参数}
      

  3.   

    名字修饰不同的编译器有不同的实现,而COM的出发点之一就是要消除这种问题,所以COM的接口定义里面不允许同名