【发布时间】:2020-04-24 16:19:17
【问题描述】:
int main(int argc, char const *argv[])
{
int *i;
const int * &j = i;
}
此代码给出错误error: non-const lvalue reference to type 'const int *' cannot bind to a value of unrelated type 'int *
但我不清楚为什么不允许这样做。我将j 定义为对指向常量int 的指针的引用。所以如果我设置它等于i,我不是说j 是i 的引用并且我们不允许修改i 指向的int 到j 吗?
【问题讨论】:
-
但我不是 const...
-
@MrBens 我知道,但这有关系吗?
-
好吧,当你写
const int * &j时,你应该给它分配一个const int *。这真的取决于你在这里想要达到的目标。 -
嗯,但是如果您放弃引用,您可以将
const int *分配给int *没有问题,对吧?如果是这样,为什么引用会改变事情? -
出于与const ptr ptr conversion 相同的原因,尽管使用的是引用而不是指针。简单的修复是
const int * const&j = i;