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

How could I "dry" common documentation for common methods through several C++ classes?

我正在使用 doxygen 来记录 C++ 库。

假设我有几个 classes A、B、C 等,它们共享一组通用方法 A::m1(), B::m1(), ...等。这些方法基本上在每个 class.

中做同样的事情

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

另一种方法是 classes(A、B、C 等)继承具有共同方法的共同 class。然而,根据我的测量,这种方法在与多重继承结合时意味着性能略有牺牲。事实上我的一些classes继承了其他classes,所以多重继承是肯定的。

所以,为了"factorise"常用的方法,我把它们写在了一个大宏里。类似于:

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

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

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

现在,我也想为常用方法编写一个文档,并且(该文档)由 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>;
    //...
};

这不同于您从通用接口继承的所有 类。这种技术没有虚拟接口查找惩罚。