错误:无法将“int&”类型的非常量左值引用绑定到“int”类型的右值

2023-11-23

我需要创建一个Bar对象,它有一个私有对象Foo f.

然而,价值Foo对象参数应通过特定方法传递int genValue().

如果我初始化f在构造函数范围内Bar(){...},编译器报错,比如没有构造函数Foo().

如果我这样构建Bar(): f(genValue()),编译器会报错:

test.cpp: In constructor ‘Bar::Bar()’:
test.cpp:16:19: error: cannot bind non-const lvalue reference of type ‘int&’ to an rvalue of type ‘int’
 Bar(): f(genValue()){    
            ~~~~~~~~^~
test.cpp:7:2: note:   initializing argument 1 of ‘Foo::Foo(int&)’    
 Foo(int &x) {    
 ^~~

示例代码:

class Foo {
public:
    Foo(int &x) {
        this->x = x;
    }
private:
    int x;
};

class Bar {
public:
    Bar(): f(genValue()){
    }
private:
    Foo f;

    int genValue(){
        int x;
        // do something ...
        x = 1;
        return x;
    }
};

int main() {

    Bar bar ();

    return 0;
}

如果我不想修改,如何解决这个问题Foo类及其参数值应从genValue()?而且,我不想使用纯指针(*),但是使用智能指针的解决方案是可以的!


A non-const参考参数,例如int&,只能指“左值”,它是named多变的。

auto takes_nonconst_reference = [](int&){};
auto takes_const_reference = [](const int&){};
auto takes_value = [](int){};
auto returns_int = []{return 42;};

int foo = 1;

// OK
takes_nonconst_reference(foo);
takes_const_reference(foo);
takes_const_reference(returns_int());
takes_value(foo);
takes_value(returns_int());

// compilation error, value returned from a function is not a named variable
takes_nonconst_reference(returns_int());

在这种特殊情况下,由于您的类存储了构造函数参数的副本,因此您应该按值传递它(int, not int& nor const int&).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

错误:无法将“int&”类型的非常量左值引用绑定到“int”类型的右值 的相关文章

随机推荐

  • 目前最好的垃圾邮件过滤算法

    目前检测垃圾邮件的最佳方法是什么 尤其是手机短信 有资源或者比较分析吗 研究监督学习技术是件好事 多项研究表明 多项式朴素贝叶斯分类器已被用于垃圾邮件过滤 并取得了巨大成功 如果它适用于垃圾邮件过滤 那么它也应该适用于短信过滤 您需要的是一
  • Flutter - 错误:没有为该类定义 getter X

    我有课TripController包含私有字段 updatedAccount 我创建了一个吸气剂以便从外部获取 class TripController final String accountId final BuildContext c
  • 为什么“代数数据类型”在名称中使用“代数”?

    当我学习 Scala Haskell 时 我看到有一个概念代数数据类型 我已经阅读了维基百科的解释 但我仍然有一个问题 为什么它的名称中使用 代数 一词 它和 代数 有什么关系吗 简而言之 我们必须考虑代数和类型之间的关系 Haskell
  • 使用 Jest 和 @testing-library/react-native 测试 React Native 项目时出现“SyntaxError:无法在模块外部使用 import 语句”错误?

    每当我跑步时都会遇到错误npm test FAIL App test js 测试套件运行失败 Jest encountered an unexpected token This usually means that you are tryi
  • 将对象从 Activity 传递到 Fragment

    我有一个Activity它使用一个Fragment 我只是想从中传递一个对象Activity to the Fragment 我怎样才能做到呢 到目前为止我见过的所有教程都是从资源中检索数据 EDIT 让我们更精确一点 我的活动有一个Lis
  • Android Studio 3.0 beta2

    当我构建项目时 出现以下错误 错误 com android builder merge DuplicateRelativeFileException 在操作系统独立路径 META INF app debug kotlin module 中找
  • 如何使用 sf 按因子构建/绘制多边形的凸包?

    我有一个物种出现的数据集 我试图通过制作凸包将其转换为出现的区域 我可以手动执行此操作 即一次一个物种 但我真的很希望能够通过物种名称自动处理它 可以在此处找到精简的示例数据集 https pastebin com dWxEvyUB 这是我
  • CSS 中的文本替换属性如何工作?

    我正在参加 upwork 考试 在那里我得到了以下问题 考虑以下代码 body text replace a b b c 如果实现文本替换样式 以下字符串的输出是什么 安迪住在咖啡馆后面 ndy 住在 CBFE 后面 辛迪住在 ccfe 后
  • 使用 Ant 预编译 JSP 的最佳方法是什么

    我试图找出使用 Ant 预编译将部署到 Oracle 应用服务器的 JSP 的最佳方法 即使我正在部署到 Oracle 应用程序服务器 我也想避免使用 Oracle 版本的 Ant Oracle 的 JSP 编译器位于 ORACLE HOM
  • 如何修改android主/详细活动中的虚拟内容?

    我将修改 eclipse 在主 详细模式中生成的项目 我找不到办法做到这一点 特别是 我会从 xml res values arrays 资源文件中获取项目 这是java文件 package com ga termeapp dummy im
  • 如何将String对象转换为Date对象? [复制]

    这个问题在这里已经有答案了 如何将 String 对象转换为 Date 对象 我想我需要做这样的事情 Date d some conversion String 任何帮助将不胜感激 SimpleDateFormat dateFormat n
  • 使用 HTML / UTF-8 字符作为光标

    我希望能够在图像悬停时使用双箭头字符作为光标 我可以只添加图像作为自定义光标吗 cursor url images my cursor png auto http designerstoolbox com designresources h
  • NodeJS Einaros WS 连接超时

    我在用埃纳罗斯WS模块与Node JS在一台计算机上 server 当我使用另一个连接时它工作正常 client 电脑 如果我插入网络电缆 ws on close function 没有解雇 我正在寻求建议是否 我必须实现我自己的 ping
  • 具有释放/获取语义的易失性

    从 Java 5 开始 volatile关键字具有释放 获取语义 以使副作用对其他线程可见 包括对非易失性变量 以这两个变量为例 int i volatile int v 注意i是一个常规的 非易失性变量 想象一下线程 1 执行以下语句 i
  • HOLDLOCK 与 UPDLOCK

    它似乎使用HOLDLOCK or UPDLOCK在一个事务 例如 T1 中 不会阻止来自另一个事务 例如 T2 的读取访问 据我了解 直到T1完成 HOLDLOCK将阻止 T2 更新 删除 和一个UPDLOCK将阻止 T2 进行更新 删除
  • 如何使用 React hooks 将 props 同步到 state:setState()

    我正在尝试使用组件接收的 props 使用 React hook setState 设置状态 我尝试使用下面的代码 import React useState useEffect from react const Persons props
  • 使用比核心数量更多的工作进程

    ThisPYMOTW 的示例给出了使用的示例multiprocessing Pool 哪里的processes传递的参数 工作进程数 是机器上核心数的两倍 pool size multiprocessing cpu count 2 否则该类
  • Celery 3.1.9 Django 集成,指定设置文件,不使用 djcelery

    我今天开始将 celery 3 1 9 与 Django 一起使用 这个较新的版本与 django 具有更紧密的集成 无需使用 django celery 我使用多个设置文件 我想知道是否有一种简单的方法来指定初始化时使用哪个设置文件cel
  • 如何检查对象的所有属性是否为 null 或为空?

    我有一个对象 我们称之为ObjectA 该对象有 10 个都是字符串的属性 var myObject new Property1 Property2 Property3 Property4 是否有办法检查所有这些属性是否为 null 或为空
  • 错误:无法将“int&”类型的非常量左值引用绑定到“int”类型的右值

    我需要创建一个Bar对象 它有一个私有对象Foo f 然而 价值Foo对象参数应通过特定方法传递int genValue 如果我初始化f在构造函数范围内Bar 编译器报错 比如没有构造函数Foo 如果我这样构建Bar f genValue