什么时候"已经是朋友"的警告有用吗?

Rei*_*ica 6 c++ gcc warnings friend

我有一些代码,它使用预处理程序繁重的框架来生成一些实用程序类.显然,一些宏导致在friend类中包含两次相同的声明,如下所示:

class Friendly {
  // :::
  friend class Bestie;
  friend class Bestie;
  // :::
};
Run Code Online (Sandbox Code Playgroud)

使用gcc(4.8.1)构建时,会生成类似的警告

Bestie已经是Friendly[默认启用] 的朋友

我真的不能在这个警告中看到用处.我很好奇为什么它首先包含在gcc中.但是,由于SO社区几乎无法回答这个问题,我将这样说出这样一个问题:重复声明会产生什么问题friend,或者程序员错误可能会出现这种情况?

我能想到的唯一一个可能暗示的问题是"你可能打算在这里写下别的东西而不是同样的东西,所以我会有所帮助警告你." 但是,在这种情况下,预期的友谊将会丢失,这将导致执行友谊的代码中出现 "访问控制违规" 错误,因此我看到警告本身很少使用.

我有什么潜在的问题吗?

Rah*_*thi 1

我认为多次声明你的朋友类是没有用的。我认为这是一个已报告的错误,并且我认为他们已经提供了解决方法。最好立即在班级中声明一个朋友,并避免以后重复。还要检查这个

我认为这个警告只是告诉用户他已经多次编写了多余的代码,没有任何用处。否则我认为这个警告没有任何用处。这就是为什么大多数程序员将其报告为错误的原因。