Rendre une structure non copiable
Bonjour,
est-il possible d'empêcher une structure d'être copiable en C99 ? Mon problème est que j'ai une structure basique de tableau dynamique qui ressemble à ceci :
Code:
1 2 3 4 5 6 7 8 9 10
| struct DynamicArray
{
int size;
int capacity;
size_t eltsize;
void* data;
}
void DynamicArray_Init(struct DynamicArray* array, size_t eltSize);
void DynamicArray_Add(struct DynamicArray* array, void* value); |
et que si quelqu'un a le malheur d'écrire plus tard:
Code:
1 2 3 4 5 6
| struct DynamicArray arrayA;
DynamicArray_Init(&arrayA, sizeof(int));
int i = 3;
struct DynamicArray arrayB = arrayA;
DynamicArray_Add(&arrayB, &i); |
Alors dans ce cas là, il se peut que la structure A soir invalidée à cause des opérations de realloc potentielles dans le Add.
J'imagine que la seule solution est de rendre la structure opaque, mais c'est un peu dommage vu que du coup ça n'est plus possible de l'allouer de manière automatique -_-
Merci d'avance.