2016-04-13 1 views
1

J'ai besoin d'aide avec la syntaxe C++ lors de l'utilisation de pointeurs const void. Je passe une fonction à un tableau vide vo (c'est-à-dire je ne sais pas quel type de données il est). J'ai alors besoin de copier le bloc de mémoire octet par octet dans un tableau char non signé local (avec et offset de 2).
Le tableau local est déclaré en dehors de la fonction & Je sais que ce sera toujours assez grand. Voici le code:Syntaxe C++ pour const void pointeur

void writeFram(const void* data, unsigned int startAddr, size_t size) 
{ 
    i2cBuffer[0] = startAddr >> 8; 
    i2cBuffer[1] = startAddr & 0xFF; 
    for(unsigned char i=0;i<size;++i) 
    { 
     i2cBuffer[i+2] = *static_cast<unsigned char*>(data); 
    } 
} 

L'erreur que je reçois est: Erreur: static_cast de type 'void * const' taper 'unsigned char * jette loin qualificatifs

Répondre

0

C'est ce que const_cast est pour. Mais vous ne devriez pas l'utiliser. Il n'y a rien de mal à lancer un const unsigned char *, parce que vous allez copier la valeur. Vous pouvez également utiliser memcpy.

+0

Je pensais que je ne pouvais pas utiliser memcpy à cause du décalage dans la destination, mais un peu de googling montre que je peux :) – paulsoulsby

2

Ne rejettera constness:

i2cBuffer[i+2] = *static_cast<const unsigned char*>(data) 
//       ^^^^^