2015-11-24 121 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

感谢您的帮助 –

相关问题