作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
enum
s。它们在同一个命名空间中,但不同的头文件。 //C1.h
#include <QObject>
namespace SW
{
Q_NAMESPACE
enum class Enum1 {A, B};
Q_ENUM_NS(Enum1)
}
//C2.h
#include <QObject>
namespace SW
{
Q_NAMESPACE
enum class Enum2 {A, B};
Q_ENUM_NS(Enum2)
}
//main.c
#include <QDebug>
#include <QMetaEnum>
#include "C1.h"
#include "C2.h"
int main(int argc, char *argv[]) {
auto me1 = QMetaEnum::fromType<SW::Enum1>();
qDebug() << "me1 valid:" << me1.isValid();
auto me2 = QMetaEnum::fromType<SW::Enum2>();
qDebug() << "me2 valid:" << me2.isValid();
}
moc_C1.o
和 moc_C2.o
定义 staticMetaObject
that result from Q_NAMESPACE
Q_NAMESPACE
.否则 moc 会报错“错误:命名空间声明缺少 Q_NAMESPACE 宏。” me1 valid: true
me2 valid: true
Q_NAMESPACE
),它会编译但在运行时出现故障:me1 valid: true
me2 valid: false
Q_NAMESPACE
对于分布在多个文件中的命名空间?
最佳答案
根据他们的问题跟踪器 QTBUG-68611,这似乎是一个已知错误
我们将不得不忍受这个限制,直到它被解决。
或者,您可以 (虽然我不建议)中间有一个文件结构,例如:
// internal/C1.h
#include <QObject>
enum class Enum1 {A, B};
Q_ENUM_NS(Enum1)
//internal/C2.h
#include <QObject>
enum class Enum2 {A, B};
Q_ENUM_NS(Enum1)
// C.h
#include <QObject>
namespace SW
{
Q_NAMESPACE
#include internal/C1.h
#include internal/C2.h
}
关于c++ - Qt C++ : Multiple Q_NAMESPACE for the same namespace in different files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60013093/
我有两个 enum s。它们在同一个命名空间中,但不同的头文件。 为了使它们可用于 Qt 元类型系统,我尝试这样做: //C1.h #include namespace SW { Q_NAMESPA
我是一名优秀的程序员,十分优秀!