类型的非常量引用的无效初始化

杰弗里芬

在以下代码中,我无法将临时对象作为函数的参数传递printAge

struct Person {
  int age;
  Person(int _age): age(_age) {}
};

void printAge(Person &person) {
   cout << "Age: " << person.age << endl;
}

int main () {
  Person p(50);
  printAge(Person(50));  // fails!
  printAge(p);
  return 0;
}

我得到的错误是:

error: invalid initialization of non-const reference of type ‘Person&’ from an rvalue of type ‘Person’

我意识到这与将lValue传递给期望rValue的函数有关...是否可以通过使用std :: move或其他方式将lValue转换为rValue?我尝试采用常量参数,但这似乎不起作用。

斯蒂芬·多尔伯格

只需使您的print函数接受您的论点即可const&从逻辑上讲这也是正确的,因为它不会修改您的论点。

void printAge(const Person &person) {
   cout << "Age: " << person.age << endl;
}

实际的问题是相反的。您正在将临时值(rvalue)传递给需要左值的函数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++-类型的非常量引用的无效初始化

来自分类Dev

类型的非常量引用的无效初始化错误

来自分类Dev

类型的非常量引用的无效初始化中的错误

来自分类Dev

从“ int *”类型的临时类型无效初始化“ int&”类型的非常量引用

来自分类Dev

c ++:“类型为“列表*”的临时类型的类型为“列表&”的非常量引用无效的初始化”

来自分类Dev

对引用使用多态。非常量引用的初始化无效

来自分类Dev

从类型''的右值对类型''的非常量引用进行了无效的初始化

来自分类Dev

来自 const char* 类型的临时对象的 cost char*& 类型的非常量引用的无效初始化

来自分类Dev

类型为'int&'的非常量引用的初始化无效,这是什么原因?

来自分类Dev

类型为std :: _ Bit_rerefence&的非常量引用的无效初始化

来自分类Dev

错误:类型'cv :: Mat&'的非常量引用无效的初始化

来自分类Dev

从右值无效初始化非常量引用

来自分类Dev

从右值无效初始化非常量引用

来自分类Dev

使用字符串调用方法时出错:类型'size_t&的非常量引用的无效初始化

来自分类Dev

`错误:非常量引用的初始化无效` 通过引用传递指针

来自分类Dev

从Visual C ++ 2015中的右值无效初始化非常量引用

来自分类Dev

从Visual C ++ 2015中的右值无效初始化非常量引用

来自分类Dev

错误:从类型'std :: vector <bool> :: reference {aka std :: _ Bit_reference}'的右值初始化'bool&'类型的非常量引用无效

来自分类Dev

从int类型的rvalue初始化&Fraction类型的非const引用的无效初始化?

来自分类Dev

从int类型的rvalue初始化&Fraction类型的非const引用的无效初始化?

来自分类Dev

类WholeNumbers的类型的引用的无效初始化

来自分类Dev

类型'const int'的表达式对类型'int&'的引用的无效初始化

来自分类Dev

C ++-从'node'类型的表达式对'node *&'类型的引用的无效初始化

来自分类Dev

错误:类型“ Layer”的表达式中对类型“ LineLayer&”的引用的初始化无效

来自分类Dev

c ++:从类型'int *'的表达式对类型'const int *&'的引用的初始化无效

来自分类Dev

来自“Class”类型的表达式的引用类型“Class&”的初始化无效

来自分类Dev

错误:非常量静态数据成员必须初始化

来自分类Dev

用非常量函数参数初始化数组

来自分类Dev

基于括号的非常量值的基于范围的初始化?

Related 相关文章

  1. 1

    C ++-类型的非常量引用的无效初始化

  2. 2

    类型的非常量引用的无效初始化错误

  3. 3

    类型的非常量引用的无效初始化中的错误

  4. 4

    从“ int *”类型的临时类型无效初始化“ int&”类型的非常量引用

  5. 5

    c ++:“类型为“列表*”的临时类型的类型为“列表&”的非常量引用无效的初始化”

  6. 6

    对引用使用多态。非常量引用的初始化无效

  7. 7

    从类型''的右值对类型''的非常量引用进行了无效的初始化

  8. 8

    来自 const char* 类型的临时对象的 cost char*& 类型的非常量引用的无效初始化

  9. 9

    类型为'int&'的非常量引用的初始化无效,这是什么原因?

  10. 10

    类型为std :: _ Bit_rerefence&的非常量引用的无效初始化

  11. 11

    错误:类型'cv :: Mat&'的非常量引用无效的初始化

  12. 12

    从右值无效初始化非常量引用

  13. 13

    从右值无效初始化非常量引用

  14. 14

    使用字符串调用方法时出错:类型'size_t&的非常量引用的无效初始化

  15. 15

    `错误:非常量引用的初始化无效` 通过引用传递指针

  16. 16

    从Visual C ++ 2015中的右值无效初始化非常量引用

  17. 17

    从Visual C ++ 2015中的右值无效初始化非常量引用

  18. 18

    错误:从类型'std :: vector <bool> :: reference {aka std :: _ Bit_reference}'的右值初始化'bool&'类型的非常量引用无效

  19. 19

    从int类型的rvalue初始化&Fraction类型的非const引用的无效初始化?

  20. 20

    从int类型的rvalue初始化&Fraction类型的非const引用的无效初始化?

  21. 21

    类WholeNumbers的类型的引用的无效初始化

  22. 22

    类型'const int'的表达式对类型'int&'的引用的无效初始化

  23. 23

    C ++-从'node'类型的表达式对'node *&'类型的引用的无效初始化

  24. 24

    错误:类型“ Layer”的表达式中对类型“ LineLayer&”的引用的初始化无效

  25. 25

    c ++:从类型'int *'的表达式对类型'const int *&'的引用的初始化无效

  26. 26

    来自“Class”类型的表达式的引用类型“Class&”的初始化无效

  27. 27

    错误:非常量静态数据成员必须初始化

  28. 28

    用非常量函数参数初始化数组

  29. 29

    基于括号的非常量值的基于范围的初始化?

热门标签

归档