【发布时间】:2011-05-29 13:17:32
【问题描述】:
大家好,
是否可以在 C++ 中制作未来安全的比较运算符 (==)?
我面临的问题是我们有一个包含多个成员的类。我们有一个比较运算符来验证对象的 instance-1 是否与 instance-2 具有相同的值。
即我们可以做
class blarg {
.....
};
.....
blarg b1(..initializers...);
blarg b2 = b1;
if (b1 == b2) {
... then do something ....
}
但是,我有一位同事向班级添加了新成员,但未能更新比较运算符。这导致了我们需要一段时间才能解决的问题。
是否有编码实践,我的意思是其他而不是代码审查(对我们来说失败了),或者编码方法、设计、模板、魔豆,任何可以帮助避免这种情况?
我的第一反应是使用memcmp 命令。但是,在阅读了“Comparing structures in C vs C++”的堆栈溢出条目后,我发现这可能会出现问题,因为 C++ 类不仅包含内部成员数据。
其他人如何处理这个问题?
提前感谢您的帮助。
【问题讨论】:
-
是的。停止雇用容易犯错误的程序员。
-
或者停止使用 C++ 来支持一些具有自省的语言。或者使用代码生成器来生成这些东西。
-
@Noah:不幸的是,可靠的程序员严重短缺。
-
@Fred - 我不知道吗。成为该地区唯一完美的程序员真是太难了。实际上,我必须故意犯错,以免人们发现并开始嫉妒。
标签: c++ class operator-overloading