bonsoir , j'ai des valeurs enregistrer dans un vecteuret j'ai besoin de les mètres dans un buffer de typestd::vector<std::string>j'arrive pas a faire cette étape.void*
merci d'avance.
bonsoir , j'ai des valeurs enregistrer dans un vecteuret j'ai besoin de les mètres dans un buffer de typestd::vector<std::string>j'arrive pas a faire cette étape.void*
merci d'avance.
un "void*", c'est un monstre C, qui signifie "une adresse, mais sans type sous-jacent". Il est toujours sous-entendu: "Il va falloir une conversion bien sale pour en faire quelque chose".
Tout dépend donc de ce que ce void* est précisément.
Ca dépend de la fonction qui l'utilise.
Pour passer un std::vector<std::string> en void* il te faut vérifier déjà la porter de ton std::vector, ceci va définir si tu l'alloues sur le stack ou la pile ( new/delete ou pas)
Mais après il faut bien comprendre que le void* tu l'utilises dans des cas très précis... Est-ce ton cas ici?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 void foo2(void* vector) { std::vector<std::string>* myVector = (std::vector<std::string>*)vector; } void foo() { std::vector<std::string> myVector; foo2((void*)&myVector); }
L'important dans ton cas c'est de savoir comment est utilisé ton void* après... Est-ce un tableau de chaine de caractère fini pas un '\0'? ce qui en a l'air...
Que sais tu exactement de ce que va faire ta fonction avec ton void* ensuite?
je suis entrains de créer un dll pour un système d'automatisation , donc pour faire les test nécessaire pour assurer le bon fonctionnement je doit communiquer avec le Workflow donc j'ai besoin d'envoyer un buffer au Workflow avec le ZMQ et pour faire ça mon buffer doit être de type (const void*) or que les donné que je veux envoyer sont de type (std::vector<std::string>) .
zmq_send(void *s, const void *buf, size_t len, int flags);
Ce que je comprends au vu de la signature de ta fonction:
Buf est une chaine de caractère, len est la taille de ta chaine... Donc tu n'envois pas un std::vector<std::string> mais plutôt un std::string::c_str().
Code : Sélectionner tout - Visualiser dans une fenêtre à part zmq_send(void *s, const void *buf, size_t len, int flags);
Lie la documentation de ta fonction... (http://api.zeromq.org/3-3:zmq-send) il y a même des exemples sur cette page trouvé en 2 secondes sur google.
Partager