2015-11-24 74 views
-2

有沒有什麼辦法從函數指針或另一種格式的類之外的類中添加方法作爲本地方法。如何動態地將方法添加到C++中的類中?

+2

您能詳細說明您正在嘗試做什麼嗎?添加一個函數本身並不是有幫助的,因爲誰和你怎麼稱呼它? – Devolus

+0

你可以在你的類中有一個'std :: function'的列表,但是你可以更具體一些嗎?例如 – dkg

+0

,我們可以在外部重載一個方法,並用一個新的簽名來稱呼它。 –

回答

1

我會實現這樣的日誌功能,沒有模板功能,並使用log4cxx::LoggerPtr智能指針。

關於類名: Afaik沒有獨立於編譯器的方式來訪問靜態類的類名。

#include <iostream> 
#include <typeinfo> 
using namespace std; 

class CMyClass 
{ 
    public: 

    // Default logger: 
    log4cxx::LoggerPtr logger(log4cxx::Logger::getLogger("com.foo")); 

    // You have to adapt this for every of your static classes: 
    const char* classname() { return "CMyClass";} 

    static void printClassName() 
    { 
     // For example: 
     LOG4CXX_INFO(logger, classname()) 
    } 

    // Point to a new logger object by reassigning the logger smart pointer. 
    static void setLogger(const log4cxx::LoggerPtr &l) 
    { 
     logger = l; 
    }  
}; 
+0

感謝您的幫助 –

相關問題