"奇数位需要左值作为赋值的左值" - C++

Lin*_*ios 2 c++ pointers void-pointers lvalue

注意:这不是标题中带有此名称的十亿和一个问题的副本.这与指针和非常奇怪的东西有关,而不是偶然=而不是==.

我有一个C++函数,我有一个void*名为的参数out.我有这条线:

(char*)out=new char[*size];
Run Code Online (Sandbox Code Playgroud)

sizeuint32_t*.编译器抱怨:

fundemental_bin_types.h:55:32: error: lvalue required as left operand of assignment
Run Code Online (Sandbox Code Playgroud)

怎么了?

pax*_*blo 7

(char*)out不是一个左值(out本身可能是,但剧组变化的东西),演员所属的赋值的另一边,你铸造一个空指针,而不是一个字符指针:

out = (void*) (new char[*size]);
Run Code Online (Sandbox Code Playgroud)

无论如何,void*可以从其他指针隐式转换,这样你就可以逃脱:

out = new char[*size];
Run Code Online (Sandbox Code Playgroud)