错误无法将 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::string
到 const std::string
这样的自动转换。只有这个 cont char**
到 char**
的反转必须给出没有转换的错误。
C++ 常见问题解答中涵盖了此问题,感谢 Steve Summit:https://isocpp.org/wiki/faq/const-correctness#constptrptr-conversion
我已经看了 10 分钟,但仍然没有完全理解,但问题显然是您可以创建非常量别名,从而在允许的情况下修改最初的 const 对象。
我有以下代码:-
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::string
到 const std::string
这样的自动转换。只有这个 cont char**
到 char**
的反转必须给出没有转换的错误。
C++ 常见问题解答中涵盖了此问题,感谢 Steve Summit:https://isocpp.org/wiki/faq/const-correctness#constptrptr-conversion
我已经看了 10 分钟,但仍然没有完全理解,但问题显然是您可以创建非常量别名,从而在允许的情况下修改最初的 const 对象。