在 class 中正确使用引用

correct usage of reference in a class

这是我的用法:

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;但是,此代码无法做到这一点。只有testcase.pol_as从46修改为3。我们有没有一个方法可以改变class之外的int(asl)或指针值(int* asl_ptr)w.r.t。此 class?

中函数 (fun1) 的结果

I need to change asl to the value in fun_out

目前您正在将 asl 的副本存储到数据成员 pol_as 中。这意味着当您从 fun1 内部调用 fun_out 时,它只会影响该副本。因此,为了达到预期的效果,您可以将数据成员 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);
  }
};

Demo

方法二

或者直接调用fun_out传递asl.

int main(){

     int asl = 46;
     
     fun_out(asl);//directly pass asl
     std::cout<<"asl: "<<asl;

}

Demo

您正在尝试将引用存储在普通数据变量中。您需要 pol_as 作为参考,然后您的代码才能 运行 正常。