Const char转换错误

Tho*_*mas 2 c++ cstring

我用gcc收到以下错误.

invalid conversion from ‘char**’ to ‘const char**’
Run Code Online (Sandbox Code Playgroud)

有了这段代码.

void foo( const int &argc, const char **argv );

int main( int argc, char *argv[] )
{
   foo( argc, argv );                                                            
}
Run Code Online (Sandbox Code Playgroud)

为什么是这样?

AnT*_*AnT 8

在函数参数列表中使用时,char *argv[]声明等同于char **argv声明.因此,当您传递argvfoo您时,实际上是在尝试argvchar **类型转换 为const char **类型.这是非法的.阅读常见问题解答http://www.parashift.com/c++-faq-lite/const-correctness.html#faq-18.17,了解其为何违法.