C ++如何传递对函数的引用

时间:2018-02-05 14:55:48

标签: c++ c++11

我有一个通过引用获取变量的类。类中的函数需要调用另一个打印对象的函数。将引用对象从<ComboBox Name="cboDefaultUser" HorizontalAlignment="Stretch" VerticalAlignment="Top" ItemsSource="{Binding Users}" DisplayMemberPath="Username" SelectedItem="{Binding TheEntity.UiUser, UpdateSourceTrigger=PropertyChanged, NotifyOnSourceUpdated=True, NotifyOnValidationError=True}" /> 传递到process()时会出现问题。我可以将引用从一个函数传递给另一个函数吗?如何使用参考完成此操作以及在这种情况下的最佳做法是什么?

(我知道可以采用其他方法,例如使用指针或通过值传递给类。但是,我想知道参考的解决方案。)

disp()

1 个答案:

答案 0 :(得分:0)

  

我可以将参考对象传递给函数吗?

迂腐点:没有&#34;参考对象&#34;。引用不是对象。

但是,是的,可以传递对函数的引用。

  

将参考对象从process()传递到disp()

时出现问题

你已经在那里传递了一个参考。该计划的那部分是正确的。

你的确存在问题:

Abc::Abc(double&, double&);

float x=2.2, y=10.5 // anohter bug: probably intended to have a semicolon here
Abc obj1(x,y);

当一种类型的对象(float)绑定到通过继承(double&)不相关的另一种类型的引用时,操作数将转换为目标类型({{1} })。转换的结果是临时r值。非const l值引用不能绑定到r值,因此程序格式不正确。

即使引用可以绑定(例如,如果使用允许它的语言扩展,或者如果使用const引用),临时的生命周期只会延长引用变量的生命周期被绑定,这是构造函数的参数。构造函数完成后,成员引用将引用其生命周期已经结束的临时文件,因此使用这些引用将具有未定义的行为。

简单解决方案:使用与参考相同类型的变量:double