代码之家  ›  专栏  ›  技术社区  ›  greywolf82

log4cxx中的深层副本附加程序

  •  2
  • greywolf82  · 技术社区  · 6 年前

    我需要在log4cxx中深入复制一个appender,但是每个appender都有一个私有的copy构造函数和 operator= newInstance 创建同一类的默认实例。在这种情况下,如何替换long if instanceof语句?举个例子:

    class FileAppender {
    public:
        FileAppender();
        ~FileAppender();
        ...getter.....
        ...setter.....
    protected:
        ....few variables....
    private:
        FileAppender(const FileAppender& o);
        FileAppender& operator=(const FileAppender& o);
    }
    
    class RollingFileAppender: public FileAppender {
    public:
        RollingFileAppender();
        ~RollingFileAppender();
        ...getter.....
        ...setter.....
    protected:
        ....few variables....
    private:
        RollingFileAppender(const RollingFileAppender& o);
        RollingFileAppender& operator=(const RollingFileAppender& o);
    }
    

    我现在拥有的:

    if ((*it)->instanceof(RollingFileAppender::getStaticClass())) {
       //cast, create new instance and copy using getter and setter
    } else if ((*it)->instanceof(FileAppender::getStaticClass())) {
       //cast, create new instance and copy using getter and setter
    }
    ......and so on........
    

    0 回复  |  直到 6 年前