我有一個類可以處於兩種狀態之一。尋找一種實現以操作爲參數的表達式的方法
假設成員變量m_bCond
確定對象的狀態。
現在,在很多類的成員函數,我有以下代碼模式:
if (m_bCond)
{
do some operation on 'm_vector[m_index]'
}
else
{
for (const auto& item : m_vector)
{
do some operation on 'item'
}
}
有沒有我可以使用以便做更「巧妙」任何好的語法?
我想能夠使用某種表達式,並將該操作作爲參數傳遞。
喜歡的東西:
Expression(operation)
{
if (m_bCond)
{
do 'operation' on 'm_vector[m_index]'
}
else
{
for (auto item : m_vector)
{
do 'operation' on 'item'
}
}
這將是容易的,我做在Python中,例如,但我真的不知道關於C++。
我知道這可以用宏來完成,但這會讓我得到一段難以調試的代碼。所以我想我正在尋找某種類型的Lambda,或者是可能的成員函數。
謝謝。
['std :: function'](http://en.cppreference.com/w/cpp/utility/functional/function)也許? –
@πάνταῥεῖ'std :: function'聽起來像沒有意義的開銷。大概只是一個當地的lambda? – lisyarus
@lisyarus如果你想通過例如lambdas作爲參數,你需要一個'std :: function'。由於OP要求將操作作爲參數... –