【发布时间】:2011-03-27 04:07:25
【问题描述】:
C++ 中的const 修饰符在star 之前意味着使用这个指针不能改变指向的值,而指针本身可以指向别的东西。在下面
void justloadme(const int **ptr)
{
*ptr = new int[5];
}
int main()
{
int *ptr = NULL;
justloadme(&ptr);
}
justloadme 函数不应该被允许编辑传递的参数所指向的整数值(如果有的话),而它可以编辑 int* 值(因为 const 不在第一个星之后),但仍然为什么这样做我在 GCC 和 VC++ 中都遇到编译器错误?
GCC: 错误:从 int** 到 const int** 的无效转换
VC++: 错误 C2664: 'justloadme' : 无法将参数 1 从 'int **' 转换为 'const int **'。转换失去限定符
为什么它说转换丢失了限定符?不是获得const 限定词吗?此外,它不是类似于strlen(const char*),我们传递一个非常量char*
【问题讨论】:
标签: c++ function pointers type-conversion constants