Yve*_*ves 3 c++ pointers const
我知道这const char * p意味着我们无法改变p通过指出的值p.
现在我正在编写一个函数,它将获取函数的参数main.意味着这个功能需要一个char **.所以我写这个函数是这样的:
void func(const char **);.但是当我将参数传递main给它时,我收到一个错误:
error C2664: 'void func(const char **)' : cannot convert argument 1 from 'char **' to 'const char **'
Run Code Online (Sandbox Code Playgroud)
我只想用const指针初始化一个non-const指针.这应该是有效的.如果我们做相反的事情,我们应该得到一些错误.但现在我不知道为什么会出现这个错误.
Lig*_*ica 10
我只想用非const指针初始化一个const指针.这应该是有效的.
这不是你想要做的,不.
您正尝试使用const指向指针的非指针初始化指向指针const char的非const指针char.这绝不会隐式执行.为什么?它也记录在其他地方,因为这不是一个完全直观的一切,但,总之,如果转换char**到const char**被允许,那么const-correctness会受到侵犯.
这是不一样的转换char**来char** const,这是你认为你正在试图做的.
不幸的是,main他们的争论还没有const散布.抱歉.幸运的是,你可以通过以下方式解决它const_cast:
void foo(const char** argv) {}
int main(int argc, char** argv)
{
foo(const_cast<const char**>(argv));
}
Run Code Online (Sandbox Code Playgroud)
这是其中一种情况,其中使用const_cast与现有的愚蠢相比,与类型系统的愿望相反,实际上是可以的.
| 归档时间: |
|
| 查看次数: |
4154 次 |
| 最近记录: |