我如何通过多个 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>;
//...
};
这不同于您从通用接口继承的所有 类。这种技术没有虚拟接口查找惩罚。
我正在使用 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>;
//...
};
这不同于您从通用接口继承的所有 类。这种技术没有虚拟接口查找惩罚。