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

标签 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;

最佳答案

假设您能够执行此转换。考虑:

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 正确性。

关于C++ 无法从 'int **' 转换为 'const int **',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19209882/

相关文章:

c++ - 为什么data()和c_str()返回的是char const*,而operator[]返回的是char&?

c++ - 使用 QDataStream 反序列化原始数据

c++ - 当数据包含空格时,如何将制表符分隔文件的内容加载到 C++ 中的二维字符串 vector 中?

c++ - Qt C++ - 将多个对象连接到一个信号

c++ - 带有可变模板参数的右值限定符丢失

c++ - 如何使用包含非拉丁字符的 C++ 程序?

c++ - 从字符串中删除字符集

c++ - 没有制定目标的规则。这是什么?

C++ 返回值显示 -858993460

c++ - 用一个函数打印出最大值和平均值