我收到了gcc的以下错误。
invalid conversion from ‘char**’ to ‘const char**’
使用此代码。
void foo( const int &argc, const char **argv );
int main( int argc, char *argv[] )
{
foo( argc, argv );
}
为什么会这样?
答案 0 :(得分:8)
在函数参数列表中使用时,char *argv[]
声明等同于char **argv
声明。因此,当您将argv
传递给foo
时,您实际上是在尝试将argv
从char **
类型转换为const char **
类型。这是非法的。阅读常见问题解答http://www.parashift.com/c++-faq-lite/const-correctness.html#faq-18.17,了解其非法行为。