gpt4 book ai didi

c++ - 将类型 "char**"转换为 "const char**"

转载 作者:搜寻专家 更新时间:2023-10-31 01:36:00 24 4
gpt4 key购买 nike

以下代码无法编译:

  char** s;
const char** s2 = s;

我知道以下方法可行,但我认为应该有一些更好的合法方法来做到这一点?

  long long x = reinterpret_cast<long long>(s);
s2 = reinterpret_cast<const char**>(x);

这个问题的背景是,我想使用两个库,它们有处理具有不同签名的 argc/argv 的函数:

void Init1(int argc, char** argv);
void Init2(int argc, const char** argv);

那么定义我的 main 签名以调用这两个函数的最佳方法是什么?

最佳答案

在 C++ 中,您可以通过 const_cast 添加或删除 const-ness ,例如:

char** s;
const char** t = const_cast<const char**>(s);

由于您正在处理 argv,因此只要 Init2 不尝试更改任何内容,向它们添加 const-ness 应该是相当安全的,而且它不应该因为它的参数是常量字符**

请注意,在删除 cv 限定符后尝试修改 const 变量的值会导致未定义的行为。

关于c++ - 将类型 "char**"转换为 "const char**",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36380983/

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