【问题标题】:Doxygen ignoring inherited functions, when class inherits privately but the functions declared public againDoxygen 忽略继承的函数,当类私有继承但函数再次声明为公共时
【发布时间】:2010-04-22 00:14:29
【问题描述】:

抱歉,标题冗长,举个例子就更有意义了。

假设我们有一个 A 类:

class A {
    public:
        void someFunction();
        void someOtherFunction();
};

还有另一个从 A 私有继承的类。但是,我们将其中一个继承的函数重新声明为 public:

class B : private A {
    public:
        A::someFunction;
}

当这段代码被 Doxygen 处理时,它不会识别类 B 中 someFunction 的公共声明。相反,它会将 someFunction 显示为私有继承的函数。这是不正确的。

有人知道如何解决这个问题吗? 干杯

【问题讨论】:

  • 听起来像是一个应该发布的错误。出于好奇,using A::someFunction; 有什么不同吗?
  • 试试 Doxygen 中的INLINE_INHERITED_MEMB 标签。
  • 我在 doxygen 和继承方面遇到了类似的情况,但在我的情况下,继承的方法根本没有出现。我使用的解决方案是将每个类拆分为单独的头文件和实现文件。你测试过这个解决方案了吗?

标签: c++ documentation doxygen


【解决方案1】:

我无法发表评论,所以我会发布这个作为答案。

当您在 C++ 中进行私有继承时,它是组合或聚合的变体。这就像“汽车 - 有 - 引擎”的关系,所以也许 Doxygen 对这种句法做事方式有问题。您可能可以稍微改变一下,以获得良好的公共继承或真正的组合。

如果您想了解有关私有和受保护继承的更多信息:http://www.parashift.com/c++-faq-lite/private-inheritance.html

希望对你有帮助!

【讨论】:

  • 代码很好,它完全符合预期(此外,我没有写它)。我更感兴趣的是 Doxygen 是否可以理解这一点,也许是通过在 cmets 中使用一些标签组合。
  • @hellsoul153:您可以通过访问声明(此处使用)和使用声明更改成员的访问模式。
猜你喜欢
  • 1970-01-01
  • 2015-02-21
  • 2019-08-24
  • 2017-06-19
  • 2011-01-05
  • 2021-11-10
  • 2016-10-08
  • 2014-11-24
  • 2011-03-11
相关资源
最近更新 更多