J'essaye de faire une fonction qui prend un void*
, copie de la mémoire, puis déplace le pointeur. Comme il est un pointeur vide, je pensais que je serais jeté à char*
et propose que, comme suit:void * cast en char * pas lvalue?
PVOID SendAndMoveHead(PVOID dest, const Message& message, const size_t& size)
{
PVOID ret = CopyMemory(dest, (PVOID)message.msg.c_str(), size);
((char*)dest) += size;
return ret;
}
Cependant, VS se plaint de ((char*)dest)
dire
expressiondoit me une lvalue modifiable
que je pensais que c'était, depuis les travaux suivants:
PVOID SendAndMoveHead(PVOID dest, const Message& message, const size_t& size)
{
PVOID ret = CopyMemory(dest, (PVOID)message.msg.c_str(), size);
char* d = (char*)dest;
d += size;
return (PVOID)d;
}
Si quelqu'un pouvait faire la lumière sur pourquoi la première version ne devrait pas fonctionner, je l'apprécierais vraiment.
Vous ne pouvez pas transformer l'opérande gauche de l'affectation. – metamorphling
Copie possible de [Pourquoi une distribution lvalue fonctionne-t-elle?] (Https://stackoverflow.com/questions/15343276/why-does-an-lvalue-cast-work) –
On peut dire que ceci devrait être étiqueté C, pas C++. – nwp