0

我有一个 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();

我怎样才能做到这一点?

4

1 回答 1

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();
于 2013-10-21T08:15:47.200 回答