我有一个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();
我该怎么做?
答案 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();