給定一個類層次結構:適當的AST匹配器
class A {};
class B {};
class C : public A {};
class D : public C {};
我試圖重構C級從B類繼承,而不是A類,我可以使用recordDecl
輕鬆搞定定義語句:
recordDecl(hasName("C"), isDefinition()).bind("MyClass")
與相關聯的MatchCallback,我可以dump()
類驗證它相匹配的右節點。然而,我還沒有找到一種方法來代替public A
,或者更好的辦法,就是A
。
什麼是合適的AST Matcher來捕獲類C的public A
或A
?
編輯:
的clang -ast-dump
在這種情況下,過濾C類會顯示類似下面的輸出:
CXXRecordDecl [address] <line numbers> <loc> class C definition
|- public 'class A'
|- CXXRecordDecl [address 2] <columns> <loc> implicit referenced class C
這是因爲如果沒有AST節點類型來表示父ast-dump中的類聲明。