Je veux fusionner en quelque sorte des modèles comme ceux-ci en un seul:Comment puis-je transmettre un opérateur arithmétique à un modèle?
template <class Result, class T1, class T2>
class StupidAdd
{
public:
T1 _a; T2 _b;
StupidAdd(T1 a, T2 b):_a(a),_b(b) {}
Result operator()() { return _a+_b; }
};
template <class Result, class T1, class T2>
class StupidSub
{
public:
T1 _a; T2 _b;
StupidSub(T1 a, T2 b):_a(a),_b(b) {}
Result operator()() { return _a-_b; }
};
(suivi du même code pour Mul, Div, etc.) où tout le code est le même, sauf pour le réel « + », "-" (et "StupidAdd", "StupidSub", etc).
Ces "foncteurs" stupides sont ensuite utilisés par un autre modèle. Comment puis-je éviter la répétition, SANS le préprocesseur? (La raison pour laquelle je suis entré dans des modèles était d'éviter le préprocesseur)
Autrement dit, comment puis-je transmettre des opérateurs arithmétiques dans un modèle?
Essayez-vous de surcharger ces opérateurs ou est-ce juste un exemple? – Jacob
Je ne surcharge pas les opérateurs arithmétiques - Je veux juste pouvoir les passer dans un template, quelque chose comme template Résultat DoWork (A a, B b) {return ArithOp (a, b); } ... sans définir des choses stupides comme StupidAdd, StupidSub –
OldCoder