C++ 使用GCC插件api动态定义虚拟方法

C++ 使用GCC插件api动态定义虚拟方法,c++,json,class,gcc,gcc-plugins,C++,Json,Class,Gcc,Gcc Plugins,我很难创建GCC(8.3.0)插件 我试图使用[[c++11::attributes]]提供的一些信息为用户定义的类定义一个虚拟方法。到目前为止,在开始更复杂的工作之前,我一直在尝试定义一个虚拟函数,给出以下定义和代码: class Base { virtual void toJson() = 0; } class [[ns::object]] UserClass : public Base { [[ns::field]] int a; [[ns::field

我很难创建GCC(8.3.0)插件

我试图使用[[c++11::attributes]]提供的一些信息为用户定义的类定义一个虚拟方法。到目前为止,在开始更复杂的工作之前,我一直在尝试定义一个虚拟函数,给出以下定义和代码:

class Base
{
    virtual void toJson() = 0;
}

class [[ns::object]] UserClass : public Base
{
    [[ns::field]]
    int a;

    [[ns::field("beta")]]
    int b;

    int c;

    [[ns::field]]
    int d;
}

int main()
{
    Base * obj = new UserClass;
    obj->toJson();

    return 0;
}
将伪json写入
stdout
,如下所示:

{
    "a": "value",
    "beta": "value",
    "d": "value"
}
我能够注册属性并收集有关用户定义类及其字段的信息,但我不知道如何在类型中注入虚拟方法声明,也不知道如何定义其主体。我在GCC插件文档(非常糟糕)和在线搜索,但我没有运气

编辑 好的,所以我设法使用
build\u method\u type\u直接
add\u method
为给定类定义了一个方法,但我不知道如何定义方法体。有什么帮助吗