Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <QtGui>
- class Parser
- {
- public:
- virtual void parse() = 0;
- virtual ~Parser() {}
- };
- class Parser1 : public Parser
- {
- public:
- Parser1()
- {
- qDebug() <<"Parser1::Parser1()";
- }
- void parse()
- {
- qDebug() << "Parser1::parse()";
- }
- ~Parser1()
- {
- qDebug() <<"Parser1::~Parser1()";
- }
- };
- Q_DECLARE_METATYPE(Parser1)
- class Parser2 : public Parser
- {
- public:
- Parser2()
- {
- qDebug() <<"Parser2::Parser2()";
- }
- void parse()
- {
- qDebug() << "Parser2::parse()";
- }
- ~Parser2()
- {
- qDebug() <<"Parser2::~Parser2()";
- }
- };
- Q_DECLARE_METATYPE(Parser2)
- void parse( const char* parserName )
- {
- int id = QMetaType::type( parserName );
- if (id != -1) {
- Parser *parser = static_cast< Parser* >
- ( QMetaType::construct( id ) );
- parser->parse();
- delete parser;
- }
- }
- int main ( int argc, char* argv[] )
- {
- qRegisterMetaType("Parser1");
- qRegisterMetaType("Parser2");
- qDebug() << "###### Trying create Parser1";
- parse("Parser1");
- qDebug() << "###### Trying create Parser2";
- parse("Parser2");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement