2016-06-01 28 views
-4

謝謝你檢查我的問題。我需要一個模板函數來像使用STL那樣使用可調用對象(如lambda,函數對象,綁定,函數指針和函數)作爲參數,但是我真的不知道該怎麼做,並且沒有資源在線。定義一個函數使用可調用對象作爲參數

具體來說,我想設計一個遍歷我的容器的函數,並且對於每個元素,它將調用可調用函數來像STL :: for_each()一樣操作元素。你能舉一個這樣的例子嗎?

非常感謝!

+1

增加獲得幫助的機率。你應該嘗試編寫一個你想要做的事情的小例子。 – kfsone

回答

0

STL使用模板來做到這一點。事情是這樣的:

template<class CallableObjectType> 
void do_stuff(/* other arguments */, CallableObjectType object) 
{ 
    // ... 
    object(arg1, arg2, arg3); 
    // ... 
} 

這就是說,試圖強迫你的對象是可調用的,除非通過調用它。如果對象不可調用,那麼模板不能被實例化,因爲object(arg1, arg2, arg3)是無效的,所以你會得到一個錯誤。如果對象是可調用的,那麼它的工作原理就是你期望的。

相關問題