2016-12-31 80 views
1

說我有一個未公開的基類的一些外部庫:我可以在派生類中記錄虛擬成員而不重寫它嗎?

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::funcDerived.h

+2

當然,您可以添加評論,但虛擬成員函數的整體思想是,如果您不覆蓋它,則不必聲明它們。如果你的新類沒有覆蓋它,那麼爲什麼你需要/需要一個文檔字符串呢?它和基類做的事情是一樣的 - 它希望被記錄下來?如果沒有,請添加文檔,並將補丁發佈爲原始供應商/作者的反饋! –

+3

@MatsPetersson:問題是它沒有被記錄在外部基類中,所以我想在清單中添加文檔,這將被doxygen拾取。此外,還有一些Derived :: func預期會遇到的額外不變量,我想要記錄 - 它恰好恰好符合這些'Base :: func',因此不需要重新實現 – Eric

回答

3

使用@fn標籤。您使用該標記並指定函數簽名,然後該塊的其餘部分將被分配給該函數。

對不起,我會給一個例子,但在手機上。

我會鏈接到官方文檔,但令人沮喪,有點諷刺的是,doxygen的參考網站不適用於手機。所以只是谷歌。

+0

不幸的是,我的實際案例不適用於此 - 我有一個繼承名稱的重載,所有嘗試使用'\ fn func()'只是將文檔添加到'func(int)'。我已更新我的問題以反映這一點 – Eric

相關問題