没有从long unsigned int转换为long unsigned int&

ihm*_*ihm 4 c++ g++

我收到错误消息的参数2从没有已知的转换long unsigned intlong unsigned int&当我尝试编译下面的代码:

void build(int* &array, unsigned long& index) {
  if (index == 0)
    return;
  else {
    heapify(array, index);
    build(array, index-1);
  }
}
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么会发生这种情况,这个错误背后的逻辑是什么?

Gus*_*son 6

第二个参数build需要引用(标记为&).引用有点像指针,因此您只能使用具有内存地址的实际变量.

这就是为什么你不能使用像这样的表达式index-1.