如何在com组件中使用安全数组传递一个string类型的数组这是一个属性
属性内容是一个string类型的数组请不要告诉我用集合
我只想使用数组谢谢您了

解决方案 »

  1.   

    用BSTR的安全数组吧
    不能用string
      

  2.   

    谢谢了是只能使用BSTR
    但是我在实现中有些问题STDMETHODIMP CBuilding::GetTextures(SAFEARRAY ** pVal)
    {
    vector<string> *pArray;
    long lSize;
    pArray = 0;
    pArray = this->Textures();//返回一个string指针
    lSize = pArray->size();

    *pVal = SafeArrayCreateVector(VT_BSTR,1,lSize-1);
    long ix[1];
    ix[0] = 0;
    for(int i=1;i<lSize+1;i++)
    {
    ix[0] = i-1;
    string tmpValue = pArray[i-1]; USES_CONVERSION;
    BSTR Val =::SysAllocString(A2W(tmpValue .c_str())); SafeArrayPutElement(*pVal,ix,&Val);
    }
    return S_OK;}这样些好像有问题
      

  3.   

    问题出在
    string tmpValue = pArray[i-1];和SafeArrayPutElement(*pVal,ix,&Val);但是我不知道为什么错了
      

  4.   

    string tmpValue = (*pArray)[i-1];
    应该可以了
    谢谢大家