2016-06-04 11 views
0

Ich versuche, den Typ eines Arguments aus einem Aufruf Ausdruck zu erhalten, um diesen Typ später in einem Rewriter zu verwenden. hier ist, was ich habe:kann den Typ eines CallExpr-Arguments nicht bekommen

const clang::Expr *const *FuncArgs = CallExpress.getArgs(); 

std::string QTString = FuncArgs[0]->getType().getBaseTypeIdentifier()->getName().str(); 

wenn ich dies ausführen, kompiliert und verknüpft in Ordnung, aber dann, wenn ich es laufen bekomme ich einen segmentaion Fehler. dreht sich diese Segmentierung Fehler passiert, wenn ich getName aufrufen. meine Frage sind zuerst, was mache ich falsch? und wenn ich das richtig mache. Gibt es andere Möglichkeiten, die QT von einem Argument in einem CallExpr zu erwerben?

+0

Sehr wahrscheinlich gibt 'getBaseTypeIdentifier'' nullptr' zurück, was zum segfault führt. – AlexDenisov

+0

Ich habe es erneut überprüft. Ich bin auch gut mit getName. Das Problem beginnt, wenn ich "str" ​​aufrufen, um StringRef in eine Zeichenfolge umzuwandeln. – bloodstalker

Antwort

0

Ich habe endlich die Antwort gefunden. Sie könnten einfach getType anrufen und dann getAsString anrufen, um den Typ als Zeichenfolge zu erhalten, vorausgesetzt, Sie haben bereits FuncArgs von der ursprünglichen Frage.

Verwandte Themen