gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 03:53:14 24 4
gpt4 key购买 nike

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

假设我有几个类 A、B、C 等,它们共享一组通用方法 A::m1()、B::m1()、...等.这些方法在每个类中基本上做同样的事情。

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

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

因此,为了“分解”常用方法,我将它们写在一个大宏中。像这样的东西:

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>;
//...
};

这不同于所有继承自公共(public)接口(interface)的类。这种技术没有虚拟接口(interface)查找惩罚。

关于c++ - 我如何通过几个 C++ 类 "dry"通用方法的通用文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30202238/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com