C ++中未使用的朋友类

时间:2010-07-13 13:26:57

标签: c++ inheritance friend

是否有一种方法可以检测(例如,使用编译器警告)是否声明类friend但是不访问私有成员,即。当友谊无用时?

4 个答案:

答案 0 :(得分:6)

我不知道如何使用编译器警告检测到这一点,但另一种方法是转到您的类定义文件并进行搜索&将friend class替换为/*friend*/ class并查看它是否仍然可以编译。当然,对于大型项目来说,这可能会变得相当繁琐。

答案 1 :(得分:3)

编译器警告不是标准化的,因此这取决于您的特定编译器。但是,如果他们中的任何人支持这一点,我会感到非常惊讶。类似的情况是,如果你有一个公共成员函数,只有其他公共成员调用(意味着它不需要公开),再一次我不认为任何编译器检测到这一点。

执行这些测试中的任何一个都意味着编译器编写者需要额外的工作,我怀疑他们是否会认为它们对实现来说非常有用。

答案 2 :(得分:2)

不是我知道的。也许那里有一个可以做到的重构工具。您可以随时尝试删除友谊并查看它是否仍然可以编译,但这对于大型项目来说可能非常耗时。

答案 3 :(得分:0)

您可以编译代码以查看它编译,然后删除所有“朋友”声明(可能以编程方式使用sed)并查看它是否仍然编译。