Скажем, у меня есть некоторые внешние библиотеки с незарегистрированной базового класса:Можно ли документировать виртуальный член в производном классе без его переопределения?
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
?
Конечно, вы можете добавить комментарий, но вся идея виртуальных функций-членов заключается в том, что вам НЕ нужно объявлять их, если вы не переопределяете их. И если ваш новый класс НЕ переопределяет его, то почему у вас должна быть/нужна docstring? Он делает то же самое, что делает базовый класс, который, надеюсь, был задокументирован? Если нет, добавьте к нему документацию и опубликуйте патч в качестве обратной связи с исходным поставщиком/автором! –
@MatsPetersson: проблема в том, что он не был задокументирован во внешнем базовом классе, поэтому я хочу добавить документацию в свою библиотеку для ясности, которая будет воспринята doxygen. Кроме того, есть некоторые дополнительные инварианты, которые, как ожидается, встречаются в Derived :: func, которые я хотел бы документировать - так бывает, что 'Base :: func' уже встречается с ними по совпадению, поэтому переопределение не требуется – Eric