Динамічне приведення типів Для динамічного приведення
Вона працює як стандартна операція Нехай у нас є класс #include <QObject> class MyClass1 : public QObject { Q_OBJECT public: MyClass1(); // ... }; class MyClass2 : public MyClass1 { Q_OBJECT public: MyClass2(); // ... }; Динамічне приведення показує наступний код: QObject *a = new MyClass2; MyClass1 *b = qobject_cast<MyClass1*>(a); MyClass2 *c = qobject_cast<MyClass2*>(b); Ці операції спрацюють коректно на етапі виконання. Як у випадку з if (b = qobject_cast<MyClass1*>(a)) { // ... } Система метаоб'єктів дозволяє також перевірити, чи успадковує класс if (a->inherits("MyClass1")) { b = static_cast<MyClass1*>(a); // ... } Однак перевагу має попередній варіант з
|