invalid initialization of non-
时间: 2023-04-25 08:06:15 浏览: 76
const reference of type ‘int&’ from a temporary of type ‘int’
这个错误消息表明你在尝试将一个临时的 int 类型的值赋值给一个非常量 int& 类型的引用,这是不被允许的。因为临时变量在赋值后会立即被销毁,而引用需要指向一个持久的变量。
相关问题
62 15 C:\Users\Lenovo\Desktop\实验2.cpp [Error] invalid initialization of non-const reference of type 'int&' from an rvalue of type 'int*'
这个错误提示是因为你在将一个int类型的指针赋值给int类型的引用时发生了错误。引用必须引用一个具体的变量,而不能引用一个指针。
例如,以下代码会导致上述错误:
```
int* ptr = new int(10);
int& ref = ptr; // 错误的写法,将指针赋值给引用
```
正确的写法应该是将指针解引用后再赋值给引用,如下所示:
```
int* ptr = new int(10);
int& ref = *ptr; // 正确的写法,将指针所指的变量赋值给引用
```
需要注意的是,在使用引用之前,必须确保引用指向的变量已经被初始化。否则会导致未定义行为。
163 19 E:\AAsoft\suanfa\exp6\MGraph.cpp [Error] invalid initialization of non-const reference of type 'ALGraph*&' from an rvalue of type 'ALGraph*'
这个错误是因为你尝试将一个指向 ALGraph 对象的指针传递给一个引用参数,但是该引用参数不是 const 引用,而你传递的指针是一个 rvalue,这是不合法的。
你可以将该引用参数改为 const 引用或者将传递的指针改为一个 lvalue。
例如,将引用参数改为 const 引用:
```cpp
void foo(const ALGraph*& graph) {
// ...
}
```
或者将传递的指针改为一个 lvalue:
```cpp
ALGraph* graph = new ALGraph();
foo(graph);
```
注意:如果你选择第二种方法,需要在函数调用结束后手动释放该对象的内存。