我对以下问题感到不满。来自CXXConstructorDecl的inits在以下场景中返回一个空列表:
Alvin-The-Robot:MyProject Alvin$ git tag
0.1.0
现在,如果我更改了Test3构造函数的定义,并将其内联为:
class Test3 {
int a = 2;
int b;
Test3();
};
Test3::Test3() : b(0) {
}
一切正常,函数inits返回a和b的2个项目的列表。
答案 0 :(得分:0)
正确的方法是执行以下操作:
if (!ctor->isThisDeclarationADefinition()) {
for (auto ctorFromList : ctor->redecls()) {
CXXConstructorDecl *ctr = dyn_cast_or_null<CXXConstructorDecl>(
ctorFromList);
if (ctr != ctor) {
ctor = ctr;
break;
}
}
现在ctor是一个指向定义的指针,该定义也包含inits列表。