2017-06-14 12 views
-2

誰かが解決策を見つけるのを手助けできますか?C++対応のC++対応アクション代入

// C# Code here 

private void Execute(Action action) 
{ 
    action(); 
} 

次のように呼び出すことができます:私は出ている今、何

this.Execute(() => { this.DoA(); this.DoB(); }); 

がへの呼び出しをラップすることです私は、次のC#コードのためのC++の等価があるかどうかを知りたいですthis.DoA();this.DoB();別の方法で、関数ポインタとしてそれを渡す:

// C++ Code here 

void Execute(void (*f)) 
{ 
    (*f); 
} 

void DoBoth() 
{ 
    DoA(); 
    DoB(); 
} 

ので、また働く、次のように呼び出すことができます。

Execute(DoBoth); 

しかし、私は方法DoBothを宣言することなく、方法を探しています。私は複数のパラメータを使用することができますが、パラメータの数を制限したくないため、C#のような方法を望んでいました。

喜んで助けてください。

+0

関数ポインタのリストを渡して、それぞれの関数ポインタを実行してみませんか? – CinCout

+0

@CinCout私はそれをするだろうが、それはむしろ醜いと判読不能なので、私は別の方法を探していた理由だ。 –

+0

@PeterDunihoそれをありがとう、それは私が探していたものです。今質問を削除するのですか他の方法でそれを閉じることはできますか? –

答えて

1

お探しの用語は「ラムダ式」です。基本的には無名関数です。

私は正直言って、私はC++のラムダでゼロの経験があります。彼らはそれがいるようだ、と次のような形式取るC++ 11に導入されてきた

[]() {} 

代わりの盗作を作ると、私は優秀な答えを持っていると思われ、このstackoverflow questionにリダイレクトます。