错误无法将 char** 转换为 const char**

Error Can not convert char** to const char**

我有以下代码:-

static char* ListOfStr[] = { "str1", "str2", "str3" };
void Foo(const char** listOfStr)
{
// do something
}

当我给Foo打电话的时候点赞;

Foo(ListOfStr);

我得到错误无法将 char** 转换为 const char** (C2664 - vc++)

我知道如何使用转换或其他方式解决问题,例如首先定义 const 数组。

但是使用 char** 作为 const char** 不是安全的吗?为什么会报错? 我认为在传递给函数时应该有像 std::stringconst std::string 这样的自动转换。只有这个 cont char**char** 的反转必须给出没有转换的错误。

C++ 常见问题解答中涵盖了此问题,感谢 Steve Summit:https://isocpp.org/wiki/faq/const-correctness#constptrptr-conversion

我已经看了 10 分钟,但仍然没有完全理解,但问题显然是您可以创建非常量别名,从而在允许的情况下修改最初的 const 对象。