這是我的用法:
void fun_out(int& mkol){
mkol = 3;
}
class refTest{
public:
int pol_as;
refTest(int& poul):
pol_as(poul){}
void fun1(){
fun_out(pol_as);
}
};
int main(){
int asl = 46;
refTest testcase(asl); // testcase.pol_as = 46
testcase.fun1(); // testcase.pol_as = 3
printf("testcase.pol_as: %d\n", testcase.pol_as);
}
在這種情況下,我需要更改asl為 中的值fun_out,即 3;但是,此代碼無法做到這一點。Onlytestcase.pol_as從 46 修改為 3。我們是否有一個方法可以改變類外的 int( asl) 或指標 value( int* asl_ptr),而該類內的函式 ( fun1) 的結果?
uj5u.com熱心網友回復:
我需要將 asl 更改為 fun_out 中的值
目前,您正在將 的副本存盤asl到 data memberpol_as中。這意味著當您fun_out從內部呼叫時,fun1它只會影響該副本。因此,為了達到預期的效果,您可以將資料成員pol_as作為左值參考,int也可以直接呼叫fun_out傳遞asl,如下所示:
方法一
class refTest{
private:
//----v---------->lvalue reference
int &pol_as;
public:
refTest(int& poul):
pol_as(poul){}
void fun1(){
fun_out(pol_as);
}
};
演示
方法二
或者直接呼叫fun_outpassing asl。
int main(){
int asl = 46;
fun_out(asl);//directly pass asl
std::cout<<"asl: "<<asl;
}
演示
uj5u.com熱心網友回復:
您正在嘗試將參考存盤在普通資料變數中。您需要pol_as提供參考,您的代碼才能正常運行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/464893.html
