2016-05-22 5 views
3
int main() { 
    int x = 1, y = 2, z = 3, w = 4; 
#define formula x + y * z % w 
    x++; 
    do_something1(formula); 
    y++; 
    do_something2(formula); 
    z++; 
    do_something3(formula); 
    w++; 
    do_something4(formula); 
#undef formula 
    return 0; 
} 

私は現在、長めのrvalueを繰り返さないように#defineを使用しています。これを行うためのより良い代替手段はありますか?長整数値を繰り返さないようにする方法

+2

あなたは機能が何であるかを知っていますか?もしそうなら、その式に必要な計算を行う関数を書くのはなぜですか? – Peter

+0

int式(int x、int y、int z、int w){return x + y * z%w; } ' –

答えて

6

使用lambdaの式:

int main() { 
    int x = 1, y = 2, z = 3, w = 4; 
    auto formula = [&] { return x + y * z % w; }; 
    x++; 
    do_something1(formula()); 
    y++; 
    do_something2(formula()); 
    z++; 
    do_something3(formula()); 
    w++; 
    do_something4(formula()); 
    return 0; 
} 
関連する問題