我正在使用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>;
//...
};
这与您从共同接口继承的所有类不同。此技术没有虚拟接口查找惩罚。