qt 如何在switch中判断自定义类型的注册ID
时间: 2024-03-11 22:51:09 浏览: 66
在 `switch` 语句中,只能使用整型、字符型和枚举型的常量作为判断条件,因此无法直接使用自定义类型作为条件。如果你想在 `switch` 中根据自定义类型的某个属性进行判断,可以考虑在自定义类型中添加一个 `getID()` 函数,返回其注册ID,然后在 `switch` 中使用 `getID()` 的返回值作为判断条件。具体实现如下所示:
```cpp
enum class MyTypeID {
TypeA,
TypeB,
TypeC
};
class MyClass {
public:
MyTypeID getID() const { return m_id; }
private:
MyTypeID m_id;
};
void foo(const MyClass& obj) {
switch (obj.getID()) {
case MyTypeID::TypeA:
// 处理 TypeA 类型的对象
break;
case MyTypeID::TypeB:
// 处理 TypeB 类型的对象
break;
case MyTypeID::TypeC:
// 处理 TypeC 类型的对象
break;
default:
// 处理未知类型的对象
break;
}
}
```
在上述示例中,我们给 `MyTypeID` 枚举类型定义了三种不同的类型,然后在 `MyClass` 类中添加了一个 `getID()` 函数,返回对象的类型ID。在 `foo()` 函数中,我们可以使用 `switch` 语句根据不同的类型ID 来处理不同类型的对象。
阅读全文