添加-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++]
警告是准确的。 RecordSet
基本上是匹配规则的std::vector< Record >
的子集。 (我实际上指的是包含它的数据结构,以及Record
具有哪些字段的定义。)它有指针数据成员,因为当我更新记录时,我需要更新原始数据。
https://github.com/c42f/tinyformat/pull/4提供了将必要的函数声明为私有的概念,然后不使用它们。不幸的是我做了一些事情,比如从一个函数返回一个RecordSet
,所以我需要复制构造函数来实际存在默认行为。
理想的是找到某种内联评论,告诉gcc是的,真的,我想要一个例外,但请警告我其他任何错误。
接下来最好是编写我自己的两个函数版本,这些函数完全符合默认值。遗憾的是,我对自己完全正确的能力没有信心。有人能指出我一个典型的例子吗?
当然,最简单的方法是关掉这个标志。但鉴于它为我捕获了真正的错误,我想避免这种情况。