使用 Qt 时,许多函数都采用类似标志 Qt::LeftDockWidgetArea 的参数。
即使我查看了 Qt 源代码,我也无法理解如何实现这种命名行为。它是通用的 C++ 还是特定于 Qt 的?
假设我有一个班级MyClass:
class MyClass {
public:
MyClass();
void setFlag(???);
};
我想这样调用 setFlag 方法:
MyClass mc;
mc.setFlag(MyClass::flag1 | MyClass::flag2)
flag1 和 flag2 应该只是 0x01 和 0x02,这是一个枚举吗?我必须在哪里声明?该方法的论点是什么?
如果这很明显,我很抱歉,但我不明白。
解决方案(来自答案)
很好。通过阅读下面的答案,我添加了这个:(请注意,我并不真正需要标志,只是来自枚举的数字,这大大简化了它)
namespace MyNames {
typedef enum {
FA = 0,
FB = 1
} Field;
}
class MyClass
{
public:
MyClass();
char getField(MyNames::Field f) const;
};
这确实允许以下调用(不):
mc.getField(MyNames::FA) //OK
mc.getField(1) //not OK