私は2つの状態のいずれかになることができるクラスを持っています。操作を引数として取る式を実装する方法を探しています
メンバ変数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++について本当によく分かりません。
私はマクロで行うことができますが、それはかなり難しいと思われるコードを私に残すでしょう。だから私は、ある種のラムダ、または可能であればメンバ関数を探していると思います。
ありがとうございます。使用
['std :: function'](http://en.cppreference.com/w/cpp/utility/functional/function)多分? –
@start :: function'は無意味なオーバーヘッドのように聞こえます。おそらくちょうど地方のラムダですか? – lisyarus
@lisyarusたとえば、 lambdaをパラメータとして使うには、 'std :: function'が必要です。 OPがパラメータとして操作を要求したので... –