Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何检索类:带有叮当声的函数_C++_Clang_Libclang - Fatal编程技术网

C++ 如何检索类:带有叮当声的函数

C++ 如何检索类:带有叮当声的函数,c++,clang,libclang,C++,Clang,Libclang,我有一个C++代码> Cx游标< /C>,它标记C++中函数声明的位置。我知道如何获取方法名或USR。。。但是如何获取类名(该方法是其中的一部分) 我正在用libclang解析的代码是: Number3D* ParseObjectFace::RetFaceVertex(){ // some code... } 当我尝试打印光标信息时,我使用: clang_getCString(clang_getCursorUSR(cr)); //output "c:@C@ParseObjectFac

我有一个C++代码> Cx游标< /C>,它标记C++中函数声明的位置。我知道如何获取方法名或USR。。。但是如何获取类名(该方法是其中的一部分)

我正在用libclang解析的代码是:

Number3D* ParseObjectFace::RetFaceVertex(){
    // some code... 
}
当我尝试打印光标信息时,我使用:

clang_getCString(clang_getCursorUSR(cr));
//output "c:@C@ParseObjectFace@F@RetFaceVertex#"
clang_getCString(clang_getCursorDisplayName(cr));
//output "RetFaceVertex()"
如何获取“ParseObjectFace”(类名)?

您可以使用它来检索游标的“语义父级”。从文件中引用:

游标的语义父级是语义上包含给定游标的游标。 [...] 在
C::f
的越界定义中,语义父类是类
C
,该函数是该类的成员

在您的示例中,类似于以下内容的操作应该有效:

// Retrieve the semantic parent (the class in this case)
CXCursor parent = clang_getCursorSemanticParent (cr);

clang_getCString (clang_getCursorDisplayName (parent));
// Should yield "ParseObjectFace"