如何通过多个C++类"dry"常见方法的通用文档?



我正在使用doxygen记录C 库。

假设我有几个A,B,C等,它们共享一组通用的方法A::m1(), B::m1(), ...等。这些方法本质上在每个类中都执行相同的操作。

我想要这些常见方法的单一实现。

一种替代方法是,类(a,b,c等)继承了具有常见方法的常见类。但是,根据我的测量值,这种方法意味着在与多种疗法结合使用时的性能稍微牺牲。实际上,我的某些课程继承了其他类,因此可以肯定的是。

因此,为了"分解"我在大宏中写下的常见方法。类似:

define COMMON_METHODS() 
void m1() { ..- } 
void m2() { ...  

然后,在每个班级中,我都放了这个宏。

我知道这可能不是最好的技术(尽管表现非常好)。

现在,我还想为通用方法编写一个文档,并且(文档)由doxygen管理和生成。

不幸的是,我找不到或想象以某种方式(在doxygen的背景下)编写文档一次。

所以我真的很感激有人能提供一些技巧或想法让我写文档一次。

问候

如果使用COMMON_METHODS自动化一系列类中某些方法的创建,则可能需要考虑将这些方法封装在模板中,并使用CRTP。

template <typename C>
class CommonMethods {
    C * me () { return static_cast<C *>(this); }
protected:
    // ... common data members can go here ...
public:
    void m1 () {
        //... use me() if needed ...
    }
    //...
};
class A : public CommonMethods<A>, //...
{
    friend class CommonMethods<A>;
    //...
};

这与您从共同接口继承的所有类不同。此技术没有虚拟接口查找惩罚。

最新更新