在C++中,为什么不能合格一个char**
作为参数传递给接受const char**
的函数,当从char*
到const char*
一个转换是可能的,如下面的C++:字符**为const char **转换
void f1(const char** a)
{
}
void f2(const char* b)
{
}
int main(int argc, char const *argv[])
{
char* c;
f1(&c); // doesn't work
f2(c); //works
return 0;
}
编译器输出
test.cpp: In function 'int main(int, const char**)': test.cpp:15:10: error: invalid conversion from 'char**' to 'const char**' [-fpermissive] test.cpp:1:6: error: initializing argument 1 of 'void f1(const char**)' [-fpermissive]
http://www.parashift.com/c++-faq/constptrptr-conversion.html – zmb
@zmb一如既往,强大的C++常见问题解答 –