【问题标题】:Reassignable reference in C++ [duplicate]C ++中的可重新分配引用[重复]
【发布时间】:2018-03-22 17:30:49
【问题描述】:

我有一个类,它有一个需要重新分配的参考字段。但与指针不同,它不能为空。

要求:

  • 参考语法:field.foo() 调用方法,而不是field->foo();
  • 可重新分配:foo = new_val; // OK

是否可以在 C++ 中对这个概念进行建模?

【问题讨论】:

  • 您无法重新分配参考。
  • 引用在初始化时被绑定,不能被重新定位。
  • 你还没有说为什么你认为你需要这样做 - 听起来像是一个 XY 问题。
  • @Ron 我肯定知道这一点。但是是否可以编写像参考一样工作的智能模板?
  • 我相信你可以在一个类中封装一个指针,使其看起来有点像一个引用。但是你为什么要呢??

标签: c++


【解决方案1】:

是的。使用 std::reference_wrapper<T> 而不是原始引用。

【讨论】:

  • 谢谢。现在才知道!不幸的是,没有 .get() 就无法调用方法
  • 是的。如果get() 是一个交易破坏者,那么你就不走运了。请注意,reference_wrapper 可以隐式转换为关联的引用类型,因此您通常可以在实践中避免使用 get()
  • 在 C++ 中似乎是一个众所周知的问题:isocpp.org/blog/2016/02/…
猜你喜欢
  • 1970-01-01
  • 2021-06-28
  • 1970-01-01
  • 1970-01-01
  • 2016-01-02
  • 2019-10-20
  • 2019-05-02
  • 2011-02-13
  • 1970-01-01
相关资源
最近更新 更多