我有一個函數可以處理自定義類型(類)的對象。 爲了避免複製該對象,我想讓我的函數通過引用來使用它。將返回值傳遞給由參考調用的函數
這適用於由代碼創建的對象,但是對於由方法返回的同一類型的對象而言,這不起作用。
下面是一個簡單的例子與整數,其中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;
}
在我來說,對象不是整數,但與許多內部變量和許多方法的類的實例。 有沒有辦法正確地做到這一點?
UPDATE: 由不工作我的意思是我得到了一個編譯錯誤:
file.cpp:32:28: error: invalid initialization of non-const reference of type ‘int&’ from an rvalue of type ‘int’
我缺少的東西或者是兩行相同呢?你是否複製粘貼並忘記更改第二行?另外,你能否詳細說明「不起作用」? – Derek
@Derek:是的,你是對的。抱歉。 – amineDZ
您想爲'areEqual'使用'const int&'參數。換句話說,'bool areEqual(const int&q1,const int&q2)'。 – crayzeewulf