Qt 的编译警告 - 仅限 Mac OS X:<class> 已经是 <class> 的朋友
Posted
技术标签:
【中文标题】Qt 的编译警告 - 仅限 Mac OS X:<class> 已经是 <class> 的朋友【英文标题】:Compilation warning with Qt - Mac OS X only: <class> is already a friend of <class> 【发布时间】:2010-08-10 21:14:52 【问题描述】:我在编译 Qt 项目时收到以下警告,但仅在带有 GCC 的 Mac OS X 上。带有 MinGW 的 Windows 和带有 GCC 的 Linux 不会发出此警告。
/Library/Frameworks/QtCore.framework/Versions/4/Headers/qtextcodec.h:175: warning: 'QCoreXmlStreamWriter' is already a friend of 'QTextEncoder'
为什么会出现这种情况,我该如何摆脱它?我是否以不正确的顺序包含了一些标题或类似的东西?
qtextcodec.h 包含在 QtCore 中,我将其包含在几个头文件中。
如果需要更多信息,请告诉我。
【问题讨论】:
【参考方案1】:根据 Qt 问题跟踪器。这是一个错误QTBUG-8243,但没有人提供解决方法。也许浏览他们提到的补丁可能会有所启发。
【讨论】:
啊...看起来它将在 4.7 中修复。我没有使用-Werror,所以不用担心。只是有点烦。 :) 感谢您的信息。【参考方案2】:Qtextcodec.h
friend class QXmlStreamWriter;
friend class QXmlStreamWriterPrivate;
#if defined(Q_OS_MAC32) || defined(Q_OS_AIX)
friend class QCoreXmlStreamWriter;
friend class QCoreXmlStreamWriterPrivate;
#endif
QCoreXmlStreamWriter 似乎只是对 QXmlStreamWriter 的定义(参见 qxmlstream.h),因此它最终将同一类声明为朋友两次。所以不,我认为你对此无能为力,它很可能是一个 Qt buglet。
【讨论】:
以上是关于Qt 的编译警告 - 仅限 Mac OS X:<class> 已经是 <class> 的朋友的主要内容,如果未能解决你的问题,请参考以下文章