は、私が文書化されていない基底クラスで、いくつかの外部ライブラリを持っていると言う:私のライブラリで派生クラス内の仮想メンバをオーバーライドせずにドキュメント化できますか?
class Base {
public:
virtual void func() { /* something */ }
}
、私はこのクラスから派生したい、とすべてのメンバーを文書化:
class Derived : public Base {
/*!
@brief do a thing
*/
void other_func();
/*!
@brief do the base thing and another thing
*/
void func(int arg);
/*!
@brief do the baseclass thing
Also, guarantee some extra invariants XYZ that the baseclass
does, but does not require subclassers to do.
*/
using Base::func;
// virtual void func() override;
// don't want to declare a new implementation of func() here
// so how can I attach a docstring to func() such that doxygen picks up on it?
}
私は文書化するにはどうすればよいです継承されたBase::func
はDerived.h
にありますか?
もちろん、コメントを追加することはできますが、仮想メンバー関数の考え方全体では、オーバーライドしないと宣言する必要はありません。あなたの新しいクラスがそれをオーバーライドしないなら、なぜそこにドキュメントストリングが必要ですか?基本クラスと同じことを行います。うまくいけば文書化されていますか?そうでない場合は、ドキュメントを追加して、元のベンダー/著者にフィードバックとしてパッチを投稿してください! –
@MatsPetersson:外部ベースクラスで文書化されていないという問題があります。そのため、ライブラリの中にドキュメントを追加して明快にするために、doxygenが選択します。また、Derived :: funcが満たすと予想されるいくつかの余分な不変条件があります。文書化したいのですが、 'Base :: func'はすでに偶然によってこれらを満たしているので、再実装は必要ありません – Eric