Я пытаюсь создать функцию, которая принимает void*
, копирует в нее часть памяти, а затем перемещает указатель. Поскольку это пустой указатель, я подумал, что приведу его к char*
и переместлю его вот так:
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;
}
Однако VS жалуется на то, что ((char*)dest)
говорит
выражение должно иметь модифицируемое lvalue
что я и думал, так как следующие работы:
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;
}
Если бы кто-то мог пролить свет на то, почему первая версия не должна работать, я бы очень признателен.
const Message&
иmessage.msg.c_str()
не оставляют места для споров. - person StoryTeller - Unslander Monica   schedule 08.09.2017