gpt4 book ai didi

c++ - MOC 将命名空间添加到类名

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:00:42 27 4
gpt4 key购买 nike

我在编译项目时遇到了这个非常奇怪的问题。MOC 似乎正在向被 moc'ed 的类名添加一个命名空间,尽管它在文件/类中的任何地方都没有提到。

然而,命名空间存在于我使用的库中,但它隐藏在头文件中很远的地方,我不在 UI 文件中使用它。这是 MOC 生成的:

const QMetaObject SmpTl::CaptureController::staticMetaObject = {
{ &QObject::staticMetaObject, qt_meta_stringdata_SmpTl__CaptureController,
qt_meta_data_SmpTl__CaptureController, 0 }};

SmpTl 命名空间在 CaptureController 的声明中没有被提及,但它出现在 MOC 生成的 .cpp 文件中。

我正在使用带有 QT 集成的 Visual Studio。

最佳答案

我也遇到了这个问题。我的代码看起来像这样:

namespace foo {
#ifdef _WIN32
... // This code was fine
#else
#error Not Supported
#endif
}

这让 MOC 感到困惑,认为命名空间 foo 从未关闭。显然,它不知道 _WIN32 已被定义,并且被我忘记在错误消息周围加上引号这一事实绊倒了。将其更改为:

#error "Not Supported"

解决了我的问题。

关于c++ - MOC 将命名空间添加到类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2684508/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com