對於較新的C++功能,你經常給一個函數作爲參數,例如:將for_each調用的函數放在類中的位置?
// File A.cpp
void do_something(Foo* foo) { ... }
void A::process_foo(){
for_each(foo_list.begin(), foo_list.end(), do_something);
}
但我應該在哪裏居然把功能do_something(...)
時,我連班工作?我不能讓它成爲私人成員,因爲在將參數傳遞給for_each時,我會鬆動this
。
所以我傾向於在我的實現文件A.cpp中定義一個普通函數do_something(...)
,就像上面代碼中給出的一樣。由於這僅通過實施A可見,所以我不會冒名稱空間污染的風險。由於其他類中的類似函數也只能在其實現中可見,因此我也不會冒險與另一類的類似函數發生名稱衝突。
這是正確的方法嗎?
另一個想法是使用Lambda。我對Lambdas不是很熟悉,所以我不知道我是應該儘可能多還是僅僅在絕對必要時使用它們...
蘭姆達斯很容易,當你知道如何。 ''for_each(foo_list.begin(),foo_list.end(),[](Foo * foo){foo-> something();});' –
也許你正在尋找'Foo * '?如果你願意的話,這也可能是「私人」的。使用'std :: bind'的 – nwp
將允許'do_something'爲私有的... – Theolodis