【发布时间】:2020-06-06 12:52:23
【问题描述】:
重要提示:我是按照 C++11 标准编码的
我必须为我的IntMatrix 类编写以下运算符(检查矩阵中的每个元素是否为<,>,==,!=,etc... 给定参数):
IntMatrix operator< (int num) const;
IntMatrix operator> (int num) const;
IntMatrix operator>= (int num) const;
IntMatrix operator<= (int num) const;
IntMatrix operator== (int num) const;
IntMatrix operator!= (int num) const;
因此,为了防止代码重复,并且由于实现几乎相同,我考虑编写一个名为 between(int from, int to) 的仿函数来检查数字是否在给定字段中。
例如:
对于operator>,我会使用 between(num+1,LargestPossibleint)
对于operator<: between(SmallestPossibleInt,num-1)
对于operator==: between(num,num)
对于operator!=: between(num+1,num-1)
但是您可以看到我的代码取决于我不想要的 LargestPossibleint 和 SmallestPossibleInt 之类的值,(并且不要相信这是一个好的解决方案) 有人可以建议对此进行编辑(也许参数的默认值可能会有所帮助)?
更新:我不能使用 lambda、宏或任何非标准级别的东西 我学到了什么? C++ 中的所有基本内容、类、函子、操作重载、模板、泛型代码...
【问题讨论】:
-
顺便说一句,这是一个常见的抱怨。以至于他们标准化了一个新的运算符 来减少所有的样板。很快我们就会有可以提供帮助的元类
-
如果使用 C++20,请查找“宇宙飞船运算符”作为起点。
-
@dfri 不,我的问题完全不同
-
@Peter 我正在使用 C++11