如何在c ++中动态地向类添加方法?

时间:2015-11-24 08:54:04

标签: c++ c++11

有没有办法以函数指针或其他格式的格式从类外部向类添加方法作为本机方法。

1 个答案:

答案 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;
    }    
};