Mik*_*ail 1 c++ string static-cast
我有一个问题,它不想使用static_cast <>进行强制转换.它能是什么?
void myCompare(const void *str)
{
const char *ca = *(static_cast<const char**>(str)); //error
const char *a = *(const char **)str; //ok
}
Run Code Online (Sandbox Code Playgroud)
你是const在第二级逃脱,这static_cast是不允许做的(事实上,没有"C++"分开const_cast):
void const*
char const* *
// ^^^^^^^^^^^ ^^^^^
// pointee cv-qualifiers
// of pointee
Run Code Online (Sandbox Code Playgroud)
相反,写
const char *ca = *(static_cast<const char* const*>(str));
Run Code Online (Sandbox Code Playgroud)
该(char const**)铸造在这里工作,因为它相当于一个static_cast后跟一个const_cast(按照[expr.cast] /(4.3)) -即它是等效于
const char *ca = *(const_cast<const char**>(static_cast<const char* const*>(str)));
Run Code Online (Sandbox Code Playgroud)