2017-06-14 37 views
-2

有人能幫我找到解決方案嗎?我想知道是否有C++當量以下的C#代碼:C++等效的C#動作傳遞

// C# Code here 

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

可以稱之爲是這樣的:

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

現在我都拿出來包裝的來電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

您正在尋找的術語是「lambda表達式」。基本上,這是一個匿名函數。

我會說實話,我沒有C++ lambda的經驗。

他們已經在C++ 11它似乎已經出臺,並採取以下形式:

[]() {} 

而不是讓抄襲的,我會重定向到這個stackoverflow question,這似乎具有優良的答案。