gpt4 book ai didi

c++ - 为什么我不能使用 static_cast(str) 而不是 (const char**)str?

转载 作者:行者123 更新时间:2023-11-30 01:12:53 26 4
gpt4 key购买 nike

我有一个问题,它不想使用 static_cast<> 进行转换。它可以是什么?

void myCompare(const void *str)
{
const char *ca = *(static_cast<const char**>(str)); //error
const char *a = *(const char **)str; //ok
}

最佳答案

你在第二层抛弃 conststatic_cast 是不允许这样做的(事实上,除了 const_cast 之外没有“C++” ):

          void    const*
char const* *
// ^^^^^^^^^^^ ^^^^^
// pointee cv-qualifiers
// of pointee

相反,写

const char *ca = *(static_cast<const char* const*>(str));

(char const**) 强制转换在这里起作用,因为它等同于 static_cast 后跟 const_cast(根据 [expr .cast]/(4.3)) - 即相当于

const char *ca = *(const_cast<const char**>(static_cast<const char* const*>(str)));

关于c++ - 为什么我不能使用 static_cast<const char**>(str) 而不是 (const char**)str?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33265466/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com