Wie kann man die Basisklasse aus diesem Beispiel mit Clang erhalten?

Hier ist ein sehr einfaches Codebeispiel und was ich gerne hätte:

class B{
    // Implementation of class B
};
class D : public B{
    // Implementation of class D
};
int main(){
    try{
        // Code for try statement
    }
    catch(D & d){
        // Handler for D 
    } 
    catch(B & b){
        // Handler for B 
    } 
    return 0; 
} 

Momentan bin ich in der Lage das zu bekommenCXXRecordDecl der Klasse B und Klasse D, in Handlern (ich kann sie von der bekommengetCaughtType Methode inCXXCatchStmt Klasse).

Was ich tun möchte, ist in der Lage zu sein, darauf zuzugreifenCXXRecordDecl der Klasse B aus der Klasse D, da wir habenclass D : public B.

Ich habe die folgenden Methoden ausprobiert, die in verfügbar sindclass CXXRecordDecl auf meinemCXXRecordDecl vonclass D:

getCanonicalDecl () : gibt Klasse D zurückgetInstantiatedFromMemberClass () : kehrt zurücknullptrgetDefinition () : gibt Klasse D zurück

Ich habe gerade keine Ideen mehr. Hat jemand eine Idee?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage