2016-06-04 3 views
0

Я пытаюсь получить тип аргумента из выражения вызова, чтобы позже использовать этот тип в перезаписывающем устройстве. вот что у меня есть:cant получить тип аргумента callExpr

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

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

, когда я запускаю это, он собирает и связывает нормально, но когда я запускаю его я получаю ошибку segmentaion. эта ошибка сегментации происходит, когда я звоню getName. Мой вопрос во-первых, что я делаю неправильно? и если я это сделаю правильно. существуют ли другие способы получения QT из аргумента в callExpr?

+0

Очень вероятно, что 'getBaseTypeIdentifier' возвращает' nullptr', что приводит к segfault. – AlexDenisov

+0

Я снова проверил. im fine с getName тоже. проблема начинается, когда я вызываю «str», чтобы превратить StringRef в строку. – bloodstalker

ответ

0

Наконец-то я нашел ответ. вы можете просто позвонить getType, а затем позвонить getAsString, чтобы получить тип в виде строки, учитывая, что у вас уже есть FuncArgs с оригинального вопроса.

Смежные вопросы