我需要在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........