3

添加 -Weffc++ 标志已经在我的代码中发现了 2 个真正的错误,所以我想保留它。不幸的是,它会导致以下结果:

record-set.h:60:7: warning: ‘class RecordSet’ has pointer data members [-Weffc++]
record-set.h:60:7: warning:   but does not override ‘RecordSet(const RecordSet&)’ [-Weffc++]
record-set.h:60:7: warning:   or ‘operator=(const RecordSet&)’ [-Weffc++]

警告是准确的。ARecordSet基本上是std::vector< Record >匹配规则的子集。(我实际上指向包含它的数据结构,以及 a 具有哪些字段的定义Record。)它具有指针数据成员,因为当我更新记录时,我需要更新原始记录。

https://github.com/c42f/tinyformat/pull/4提供了将必要的函数声明为私有的想法,然后不使用它们。不幸的是,我做了诸如RecordSet从函数返回 a 之类的事情,所以我需要复制构造函数以默认行为实际存在。

理想的情况是找到某种内联注释,告诉 gcc 是的,真的,我想要一个例外,但请警告我其他任何问题。

下一个最好的方法是编写我自己的这两个函数的版本,它们的功能与默认值完全相同。不幸的是,我对自己完全正确的能力没有信心。有人可以指出一个典型的例子吗?

当然,最简单的方法是关闭此标志。但鉴于它为我捕获了真正的错误,我想避免这种情况。

4

0 回答 0