通过引用将对象参数传递给函子
Passing object parameter to a functor by reference
我有一个以lat3d对象为参数的函子,我想把这个函子传递给一个调整ef的根查找例程。函子看起来像:
struct NormalizeNer {
NormalizeNer(lat3d &lat) : lat(lat) {}
double operator()(const double ef) {
lat.setEf(ef);
// some other irrelevant code
}
public:
lat3d lat;
};
函子被实例化并传递给根查找例程findRoot,如下所示:
lat3d lattice();
NormalizeNer normalize(lattice);
double efroot = findRoot(normalize, eflo, efhi, eftolerance);
这是有效的,除了在第4行使用我的类成员函数lat.setEf(ef)只更新lat3d对象副本中的lat.ef。我希望能够通过引用传递lat3d对象,这样我以后就可以得到Ef:的最后更新值
double lastEf = lattice.Ef
有什么想法可以在这里通过参考传递吗?显然使用了lat3d&第2行的lat不起作用。谢谢
成员变量lat
也应该是一个引用:
lat3d ⪫
在当前代码中,NormalizeNer
构造函数接受引用,但随后生成副本。
相关文章:
- 如何在不使用指针的情况下将派生类的对象作为参数传递给基类中的函数?
- 如何将对象数组作为参数传递给模板
- 如何将成员函数作为参数传递并在派生对象上执行方法列表
- 如何将子类作为函数的参数传递给期望基类,然后将该对象传递到指向这些抽象类对象的指针向量中?
- 对象作为参数传递,就好像我们正在传递构造函数值一样
- 初始化对象以在 C++08 中作为参数传递的首选语法是什么?
- 将对象作为参数传递,没有可行的重载"="
- 当我按值传递参数时对象被破坏时?
- 在将匿名对象作为参数传递时,不会调用任何构造函数
- 是否可以创建一个指向对象的智能指针并将此智能指针作为参数传递给构造函数?
- C++:将对象作为参数传递
- 将 std::ofstream 对象作为参数传递给类方法
- 将对象向量的指针作为参数传递,但差异更大
- 当数组对象以函数参数传递时,为什么复制构造函数会自称
- 如何将对象作为参数传递
- 将对象作为C 中的参数传递
- 将新对象的名称作为参数传递
- 将对象数组作为参数传递的最佳方法是什么
- 为什么将临时对象作为参数传递需要 std::move?
- 将任何数据类型/对象作为参数传递以确定其大小