[Error] invalid initialization of non-const reference of type 'LinkQueue&' from an rvalue of type 'LinkQueue*'
时间: 2024-11-22 18:49:00 浏览: 2
解决Invalid byte 1 of 1-byte UTF-8 sequence
5星 · 资源好评率100%
这个错误信息 "Error: invalid initialization of non-const reference of type 'LinkQueue&' from an rvalue of type 'LinkQueue*'" 出现在 C++ 编程中,意味着你在尝试初始化一个引用(reference)时遇到了问题。`LinkQueue&` 表示对 LinkQueue 类型的引用,而 `LinkQueue*` 是指向 LinkQueue 的指针。
C++ 中,引用必须绑定到某个已存在的对象上,而不能直接从指针创建引用。当你试图从一个指针(可以看作临时的对象)去初始化引用时,因为指针不是具体的对象实例,所以会导致这样的错误。
例如,下面的代码可能会引发此类错误:
```cpp
LinkQueue* pq = new LinkQueue(); // 创建一个指针
LinkQueue& ref = *pq; // 错误:不能从指针创建引用,应该解引用后再初始化引用
```
正确的做法应该是先将指针解引用,再用解引用后的对象来初始化引用:
```cpp
LinkQueue* pq = new LinkQueue(); // 创建一个指针
LinkQueue tmp = *pq; // 先复制指向的对象
LinkQueue& ref = tmp; // 现在可以安全地初始化引用
```
阅读全文