以下の例のように、加算などの一連の構造体に対して操作を実行したいと考えています。プログラムでエラーが発生しますno match for 'operator+' (operand types are 'Gravity' and 'Friction')
。どうすれば正しく実装できますか?
#ifndef FORCE_HPP
#define FORCE_HPP
struct Physics{ // not sure if this is needed
struct Gravity{ // force type 1, which computes gravity
int operator()(double t) { //gravity force is computed based on a parameter t, and returns an int
...
return Fg;
}
};
struct Friction{ // force type 2, which computes friction
int operator()(double t) { //friction force is computed based on parameter t, and returns an int
...
return Fs;
}
};
template< typename F1, typename F2>
Point make_physics(F1 first, F2 second){ // there can be 2 gravity forces, 2 friction forces, or 1 gravity and 1 friction force in a problem. As a result, use a template
return first + second;
}
};
#endif
プログラムが正しく動作する場合、次の操作を行うと
int main(){
...
make_pair(t, make_physics(Gravity(), Friction()) );
...
}
時間とその時間に対して計算された力のペアを取得する必要があります。