0

C インターフェイス用の C++ ラッパー クラスがあります。そのインターフェイスの 1 つの関数には、デフォルトのパラメーターを持つ引数があります。

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

デフォルト引数は、関数宣言のparameter-declaration-clauseにのみ指定する必要があります

なぜポインタを使いたいのですか?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 に答える