转换类型" char **" to" const char **"

时间:2016-04-03 02:27:04

标签: c++ casting main

以下代码无法编译:

  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签名以调用这两个函数的最佳方法是什么?

1 个答案:

答案 0 :(得分:3)

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

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

由于你正在处理argv,只要Init2没有尝试改变任何东西就可以非常安全地向它们添加const,并且它不应该因为它的参数是{{1 }}

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