【发布时间】:2009-10-26 15:44:49
【问题描述】:
我想以某种方式将这些模板合并为一个:
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; }
};
(后跟 Mul、Div 等相同的代码)其中所有代码都相同, 除了实际的“+”、“-”(以及“StupidAdd”、“StupidSub”等)。
这些愚蠢的“函子”然后被另一个模板使用。 在没有预处理器的情况下如何避免重复? (我进入模板的原因是为了避免预处理器)
也就是说,如何将算术运算符传递给模板?
【问题讨论】:
-
你是想重载这些操作符还是这只是一个例子?
-
我没有重载算术运算符 - 我只是希望能够在模板中传递它们,例如模板
Result DoWork(A a , B b) { return ArithOp(a,b); ...没有定义愚蠢的东西,如 StupidAdd、StupidSub