2014-11-05 14 views
5

Ich habe eine Vorlagenklasse, die eine Reihe von rein virtuellen und implementierten virtuellen Funktionen hat. Ich habe dann Kinder von dieser Klasse erben. Ich möchte die Funktionen in der virtuellen Elternklasse dokumentieren und Kinder haben diese Dokumentation in Doxygen erben.Doxygen C++ - Nicht dokumentieren von virtuellen Funktionen in einer Vorlagenklasse

Zum Beispiel (ich kann die echte Quelle nicht veröffentlichen).

template <typename A> 
class Parent { 
    /** Documentation 
    */ 
    virtual void pure() = 0; 

    /** More Docs 
    */ 
    virtual void notpure() { 
     ... 
    } 
}; 

In einer anderen Datei mit allen richtigen (zumindest für den Compiler) Ich möchte

class Child: public Parent<int> { 
    void pure() { 
     ... 
    } 
}; 

enthält dann Doxygen Dokumentation für jede Funktion mit der gleichen Dokumentation für beide Klassen erzeugen, es sei denn, ich re- dokumentieren Sie die überschriebene Funktion.

Ich benutze Ubuntu 14.04 und benutze das Repository Doxygen 1.8.6, falls es darauf ankommt.

Danke

Antwort

3

Also werde ich meine eigene Frage beantworten. Irgendwie.

Wenn jemand das gleiche Problem hat, achten Sie darauf, auf Kommentarfehler zu prüfen. Doxygen behandelte meine Vorlagen gut, aber ich hatte ein Problem, weil ich die Angewohnheit hatte,/* code/**/in meine Programme einzufügen, damit ich große Codeblöcke während des Debuggens schnell auskommentieren kann. Doxygen mag das nicht!

hatte ich die Fehlermeldung

Datei in der Mitte eines Kommentarblock beendet! Vielleicht ein fehlender \ endcode?

Es dauerte eine Weile, bis ich die Warnungen durchforstete, weil ich mehrere undokumentierte Dateien hatte. Dies wurde gesorgt durch

EXTRACT_ALL = YES

In meiner config-Datei. HERE ist jemand, der ein ähnliches Problem hat wie ich.

3

Nach dem INHERIT_DOCS Tag, sollte es schon tun, wenn Sie es zu ‚ja‘ gesetzt haben.

AFAIK doxygen hatte einige Probleme mit der Analyse von Templates-Klassen und das könnte der Grund sein, warum Ihre Dokumentation nicht dupliziert wird (doxygen denkt also Child erbt von einer anderen Parent Klasse).

Sie können versuchen, dieses Verhalten zu erzwingen, indem Sie den Befehl \copydoc verwenden. Wenn das immer noch nicht funktioniert, müssen Sie entweder nach einem Patch fragen oder es selbst reparieren.

+0

Vielen Dank. Wissen Sie, wie Sie die Vorlage Parent mindestens dokumentieren können?Ich kann es nicht scheinen, die Dokumentation im Elternteil zu erkennen. –

+0

Es scheint, dass Sie bereits gelöst haben. Doxygen hat das Parsing falsch, wenn ein vorheriger Tag/Parsing-Vorgang fehlgeschlagen ist –

1

Ich hatte ein ähnliches Problem beim Generieren von Dokumenten einer abstrakten Klasse. Die Lösung bestand darin, die Methoden öffentlich zu machen (standardmäßig sind alle Methoden in einer C++ - Klasse privat und Sie müssen EXTRACT_PRIVATE in Ihrer Doxygen-Konfigurationsdatei auf YES setzen, damit Dokumente generiert werden).

Ich hoffe, das hilft jemandem!