从int**到const int的转换无效**

Bug*_*ash 1 c++ const multiple-indirection implicit-conversion

我有一个类,其中一个二维数组的int实现为int**.我按如下方式为这个2D数组实现了一个访问器函数,返回一个const int**以防止用户编辑它:

const int** Class::Access() const
{
     return pp_array;
}
Run Code Online (Sandbox Code Playgroud)

但是我得到了编译错误"从int**到const int**的无效转换".为什么不允许在这里推广const?如何在不编辑权限的情况下授予用户访问信息的权限?

Ben*_*igt 6

Greyson是正确的,你想要使用const int* const*,但没有解释为什么你的原始版本失败.

以下是为什么 int**const int**以下内容不兼容的演示:

const int ci = 0;
const int* pci = &ci;
int* pi;
int** ppi = π
const int** ppci = ppi; // this line is the lynchpin
*ppci = pci;
*pi = 1; // modifies ci!
Run Code Online (Sandbox Code Playgroud)