将返回值传递给通过引用调用的函数
Passing return value to a function called by reference
我有一个与自定义类型(类)对象一起工作的函数。为了避免复制该对象,我想让我的函数通过引用来使用它。
对于由代码创建的对象,这可以正常工作,但对于由方法返回的相同类型的对象,则不能。
下面是一个简单的整数例子,其中areEqual是函数:
#include <iostream>
using namespace std;
class part
{
int i_Nbr;
public:
part(int n){
i_Nbr = n;
}
int getNbr(){
return i_Nbr;
}
};
bool areEqual(int& q1, int& q2){
return q1==q2;
}
int main(){
int i1 = 50;
int i2 = 60;
part a(240);
part b(220);
bool eq;
// this works
eq = areEqual(i1, i2 );
cout << eq << endl;
// but this doesn't
eq = areEqual(a.getNbr(), b.getNbr() );
cout << eq << endl;
return 0;
}
在我的例子中,对象不是整数,而是具有许多内部变量和许多方法的类的实例。是否有正确的方法?
更新:我的意思是我得到了一个编译错误:
file.cpp:32:28: error: invalid initialization of non-const reference of type ‘int&’ from an rvalue of type ‘int’
bool eq = areEqual(a.getNbr(), b.getNbr() );
不起作用,因为函数返回int
,这是对areEqual
调用中的临时对象。当参数类型为int&
时,不能使用临时对象。在areEqual
或int
中使用int const&
作为参数类型
bool areEqual(int const& q1, int const& q2){ ... }
或
bool areEqual(int q1, int q2){ ... }
相关文章:
- 如何在 c# 代码中通过引用调用时从 c++ dll 更新数组值?
- 推理类型如何工作"auto"和按引用调用?
- C++ 通过引用调用函数
- 按引用调用与按指针参数调用的差异 前递增和后递增
- C++当您取消引用指向类对象的指针,然后将其作为引用返回时,是否可以对此引用调用方法
- 通过引用调用模板专用化
- 为什么通过带有文字编号的引用调用会出现"无匹配函数"错误?
- 按引用调用还是按值调用?
- 从 JS (V8) 中C++对象的引用调用函数
- 为什么要抛出引用调用复制构造函数的异常?
- 向量 - 通过引用 c++ 调用
- 为什么可以从常量引用调用析构函数
- 使用全局引用调用函数时访问冲突
- 引用调用在 c++ 中如何工作?
- 它不是编译.我正在调用一个通过引用调用的函数,但有一个错误,无法将双*转换为双倍
- C++函数调用 lambda obj,按值调用比按引用调用快
- 如何在 C++14 中编写用于调用 Fortran 函数的通用包装器(按引用调用 --按值调用>)
- 通过引用调用类对象的 2D 数组
- 构造函数参数中的引用调用引用的默认构造函数
- 如何在 main 中使用包含对节点的引用调用函数