Lin*_*ios 2 c++ pointers void-pointers lvalue
注意:这不是标题中带有此名称的十亿和一个问题的副本.这与指针和非常奇怪的东西有关,而不是偶然=而不是==.
我有一个C++函数,我有一个void*名为的参数out.我有这条线:
(char*)out=new char[*size];
Run Code Online (Sandbox Code Playgroud)
凡size在uint32_t*.编译器抱怨:
fundemental_bin_types.h:55:32: error: lvalue required as left operand of assignment
Run Code Online (Sandbox Code Playgroud)
怎么了?
(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)