2009-10-08 11 views
12

Powiedzmy mam dwie klasy:Prawidłowe sposobem sprawdzenia QObject pochodzący typ klasy w Qt

class A : public QObject {}; 
class B : public QObject {}; 

potem pójdę

QObject *a = new A(); 
QObject *b = new B(); 

teraz, w jaki sposób upewnić się, że „a” jest instancja klasy A, a "b" jest instancją klasy B?

obecnie zrobić coś takiego:

if (a->inherits(A::staticMetaObject.className())) { 
... 
} else if (a->inherits(A::staticMetaObject.className())) { 
... 

jest jakiś lepszy sposób?

Odpowiedz

31

Można użyć qobject_cast<MyClass*>(instance) na klasach pochodnych QObject i sprawdzić wartość zwracaną. Jeśli instance nie można przesłać do MyClass*, zwracana wartość będzie równa NULL.

+1

Cóż .. patrząc na dziedziczenie źródło funkcji pokazuje, że wewnętrznie używa qobject_cast do weryfikacji typu obiektu –

Powiązane problemy