【发布时间】:2011-01-25 00:11:24
【问题描述】:
我正在使用启用了 -Wextra 的 g++ 版本 4.2.1。我包含了来自库的标头,并且不断收到以下关于库中类的警告,该类由 -Wextra 启用(我已将类的实际名称替换为 BaseClass):
warning: base class ‘class BaseClass’ should be explicitly initialized in the copy constructor
我的问题是:如何禁用此警告?例如,-Wextra 也启用了 -Wuninitialized,但我可以通过将 -Wno-uninitialized 作为编译器标志来覆盖这个简单的方法。关于复制构造函数的警告有什么类似的吗?我无法在 g++ 手册页或任何其他论坛帖子中找到答案。
【问题讨论】:
-
没有看到一些示例代码,怎么可能有人知道?
-
还要注意,禁用警告很少是一个好方法...
-
这个警告可以说是不必要的。如果派生类的初始化列表中没有给出基类构造函数,则调用默认构造函数。在这种情况下,我知道并理解这种行为,所以我不希望发出这个警告(另外,它在我不想修改的库中)。
-
另外,这个问题是关于编译器标志以及如何打开或关闭它们,那么为什么需要任何代码?