c ++无法从'int **'转换为'const int **'

时间:2013-10-06 14:23:44

标签: c++

请考虑以下代码:

int** a;
const int** b;
b = a;

此代码出错:

error C2440: '=' : cannot convert from 'int **' to 'const int **'
Conversion loses qualifiers

为什么我无法执行演员表?

当操作简单指针时,它可以正常工作。

int* a;
const int* b;
b = a;

1 个答案:

答案 0 :(得分:3)

假设您能够执行此演员表。考虑:

const int n = 42;
const int* cp = &n;

int* p;
int** a = &p;

const int** b;
b = a;  // hypothetical, doesn't compile
*b = cp;  // equivalent to p = cp;
*p = 84;  // equivalent to n = 84: oops

因此,允许从int**const int**的隐式强制转换将允许程序违反const正确性。