【问题标题】:Is there anyway to use a member function as a default parameter?反正有没有使用成员函数作为默认参数?
【发布时间】:2011-06-21 12:51:36
【问题描述】:

它尝试了类似的方法,但不起作用。有没有办法获得类似的效果?

class A
{
public:
  int foo();
  void bar(int b = foo());
};

【问题讨论】:

  • 您到底想完成什么?给我们一个你想做什么的真实例子。
  • 我有一个像这样的成员函数 getDistance(Units units = getDefaultUnits());所以我不必指定单位,除非我想要默认值以外的东西。我还考虑过将 DEFAULT 添加到 Units 枚举中。
  • 为不同的单位添加不同的类型并在所有不同的单位之间添加隐式转换函数可能是一个更好的主意。这样,您可以在需要它们的地方显式使用单元,并让编译器负责其余的工作!请记住,在 C++ 中使用类型非常便宜,如果使用正确,通常是免费的。

标签: c++ member-functions default-parameters


【解决方案1】:

是的。重载函数并调用其中的成员函数。

void bar() { bar(foo()); }

【讨论】:

  • 我试图理解这一点。你可以帮帮我吗?我很困惑,不明白这样做的目的。你现在声明了 2 个 bar(),一个只调用另一个?
  • @Nicklammort:实际上,当您为参数设置默认值时,您可以在不为该参数传递任何参数的情况下调用该函数;您也可以选择传递参数。这正是这里的情况。您可以将 bar 称为 bar() 以及 bar(10)... 所以实际上 似乎 bar 的参数具有默认值!
  • 哦,我明白了,所以使用重载函数,您可以像“模拟”默认参数一样......很好。谢谢你澄清纳瓦兹! :)
  • 我希望避免这种情况,因为这是一堆额外的代码,但它确实解决了问题。
猜你喜欢
  • 2015-01-15
  • 1970-01-01
  • 2020-11-27
  • 1970-01-01
  • 2012-09-01
  • 2016-07-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多