2014-11-05 23 views
5

Ho una classe template che ha un sacco di funzioni virtuali pure virtuali e implementate. Quindi i figli ereditano da questa classe. Voglio documentare le funzioni nella classe genitore virtuale e avere figli ereditare questa documentazione in Doxygen.Doxygen C++ - Non documentare le funzioni virtuali in una classe template

Ad esempio (non posso pubblicare la fonte reale).

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

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

In un altro file con tutti i corretta comprende (almeno per il compilatore)

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

Allora voglio Doxygen per generare documentazione per entrambe le classi con la stessa documentazione per ciascuna funzione a meno che non ri- documenta la funzione ignorata.

Eseguo Ubuntu 14.04 e utilizzo il repository Doxygen 1.8.6 nel caso in cui sia importante.

Grazie

risposta

3

Quindi, risponderò alla mia domanda. Una specie di.

Se qualcuno ha lo stesso problema, accertarsi di controllare i bug di commento. Doxygen ha gestito bene i miei template, ma ho avuto un problema perché ho l'abitudine di inserire/* code/**/nei miei programmi in modo da poter rapidamente decommentare grandi blocchi di codice velocemente durante il debug. Doxygen non piace questo !.

ho avuto il messaggio di errore

File conclusa nel bel mezzo di un blocco di commento! Forse un \ endcode mancante?

Mi ci è voluto un po 'per guadare gli avvisi generati perché avevo diversi file non documentati. Questo è stato curato utilizzando

EXTRACT_ALL = YES

Nel mio file di configurazione. HERE è qualcuno che ha un problema simile a quello che ero.

3

Secondo il tag INHERIT_DOCS, dovrebbe già farlo se lo avete impostato su ''.

per quanto ne so doxygen ha avuto qualche problema con le classi modelli di analisi e che potrebbe essere il motivo per cui la documentazione non viene duplicato (cioè doxygen pensa Child eredita da una diversa Parent classe).

Si potrebbe provare a forzare questo comportamento utilizzando il comando \copydoc. Se ciò non funziona, potresti dover chiedere una patch o correggerla da soli.

+0

Grazie. Sai come renderlo almeno documentare il template Parent?Non riesco a convincerlo a riconoscere la documentazione nel genitore. –

+0

Sembra che tu abbia già risolto. Doxygen ha sbagliato l'analisi quando qualche operazione precedente di tag/analisi è andata storta –

1

Ho avuto un problema simile alla generazione di documenti di una classe astratta. La soluzione era rendere pubblici i metodi (per impostazione predefinita in una classe C++ tutti i metodi sono privati ​​ed è necessario impostare EXTRACT_PRIVATE su YES nel file di configurazione Doxygen per la generazione di documenti).

Spero che questo aiuti qualcuno!