C++ 是否仍然可以使用成员函数作为默认参数?

C++ 是否仍然可以使用成员函数作为默认参数?,c++,member-functions,default-parameters,C++,Member Functions,Default Parameters,它试过这样的东西,但不起作用。有没有办法获得类似的效果 class A { public: int foo(); void bar(int b = foo()); }; 对。重载函数并调用其中的成员函数 void bar(){bar(foo());}你到底想实现什么?给我们一个你想要做的真实例子。我有一个成员函数,比如getDistance(Units=getDefaultUnits());因此,我不必指定单位,除非我想要的不是默认单位。我还考虑过将默认值添加到Units枚举中。为不同

它试过这样的东西,但不起作用。有没有办法获得类似的效果

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

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


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

你到底想实现什么?给我们一个你想要做的真实例子。我有一个成员函数,比如getDistance(Units=getDefaultUnits());因此,我不必指定单位,除非我想要的不是默认单位。我还考虑过将默认值添加到Units枚举中。为不同的单元添加不同的类型,并在所有不同的单元之间添加隐式转换函数,这可能是一个更好的主意。这样,您就可以在需要的地方显式地使用单元,并让编译器处理其余的部分!请记住,C++中使用类型非常便宜,如果你做的正确,通常是免费的。我正在尝试理解这一点。你能帮我吗?我很困惑,看不出这有什么意义。您现在声明了2个bar(),一个只调用另一个?@Nicklamort:实际上,当您有一个参数的默认值时,您可以调用该函数,而无需为该参数传递任何参数;您也可以选择传递参数。这正是这里的情况。您可以将bar称为
bar()
以及
bar(10)
。。。所以实际上,这个条的参数似乎有默认值!哦,我明白了,所以使用重载函数,你可以,像‘模拟’默认参数……很好。澄清纳瓦兹的Thx!:)我希望避免这种情况,因为这是一堆额外的代码,但它确实解决了问题。