|
Динамічне приведення типів Для динамічного приведення
Вона працює як стандартна операція Нехай у нас є класс
#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);
// ...
}
Однак перевагу має попередній варіант з
|
