使用带有函数指针的Wrapper来处理参数的默认值

时间:2013-10-21 08:14:40

标签: c++ c function-pointers default-value

我有一个C接口的C ++包装器类。该接口中的一个函数具有带默认参数的参数:

api.h:
int Foo(int bar=5);

这是包装器:

Wrapper.hpp:
class Wrapper
{
public:
   static int (*Foo) (int bar);
}

Wrapper.cpp:
int (*Wrapper::Foo)(int bar);

这是我在Wrapper中使用该函数的地方:

Wrapper::Foo(5);

但我也希望能够在没有参数的情况下调用Foo,因此它采用默认值5

Wrapper::Foo();

我该怎么做?

1 个答案:

答案 0 :(得分:3)

没有办法做这样的事情,只能用函数指针,因为函数指针禁止使用默认参数,你不能将函数int(int)赋给函数int()

N3376 8.3.6 / 3

默认参数只能在函数声明的参数声明子句中指定

为什么要使用指针?只需编写函数,即从API调用函数。

class Wrapper
{
public:
   static int Foo (int bar) 
   { 
      return ::Foo(bar); 
   }
   static int Foo ()
   {
      return ::Foo();
   }
}

Wrapper::Foo(1);
Wrapper::Foo();