c ++ - kan ikke konvertere fra char til void *

Indlæg af Hanne Mølgaard Plasc

Problem



SAFEARRAYBOUND bound[1] = {25, 0};
SAFEARRAY * psa = SafeArrayCreate(VT\_UI1, 1, bound);
for(long int i = 0; i <25; i++)
    SafeArrayPutElement(psa, &i,sendBuf[i]);


Jeg forsøger at oprette en safearray fra et char array men få denne fejl cannot convert from char to void*
sendBuf er et char array [10]

Bedste reference


Du viste os ikke fejlen, men det ser ud til SafeArrayPutElement tager en pointer til elementet som den tredje parameter. Jeg tror, ​​at det vil virke, hvis du bruger:


SafeArrayPutElement(psa, &i, &sendBuf[i]);


Bemærk &.

Andre referencer 1


Det ville være mere effektivt i dette tilfælde at bruge SafeArrayAccessData() i stedet for SafeArrayPutElement():


SAFEARRAYBOUND bound[1] = {25, 0}; 
SAFEARRAY * psa = SafeArrayCreate(VT\_UI1, 1, bound); 
void *pvData;
SafeArrayAccessData(psa, &pvData);
memcpy(pvData, sendBuf, 25);
SafeArrayUnaccessData(psa);


Eller:


SAFEARRAYBOUND bound[1] = {25, 0}; 
SAFEARRAY * psa = SafeArrayCreate(VT\_UI1, 1, bound); 
unsigned char *pvData;
SafeArrayAccessData(psa, (void**)&pvData);
for(long int i = 0; i <25; i++)     
    pvData[i] = sendBuf[i];
SafeArrayUnaccessData(psa);