Advertisement
Guest User

main.cpp

a guest
Jan 4th, 2014
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.22 KB | None | 0 0
  1. #include <QtGui>
  2.  
  3. class Parser
  4. {
  5. public:
  6.  
  7.  virtual void parse() = 0;
  8.  
  9.  virtual ~Parser() {}
  10.  
  11. };
  12.  
  13. class Parser1 : public Parser
  14. {
  15. public:
  16.  
  17.     Parser1()
  18.     {
  19.         qDebug() <<"Parser1::Parser1()";
  20.     }
  21.  
  22.     void parse()
  23.     {
  24.         qDebug() << "Parser1::parse()";
  25.     }
  26.  
  27.     ~Parser1()
  28.     {
  29.        qDebug() <<"Parser1::~Parser1()";
  30.     }
  31. };
  32. Q_DECLARE_METATYPE(Parser1)
  33.  
  34. class Parser2 : public Parser
  35. {
  36. public:
  37.  
  38.     Parser2()
  39.     {
  40.         qDebug() <<"Parser2::Parser2()";
  41.     }
  42.  
  43.     void parse()
  44.     {
  45.         qDebug() << "Parser2::parse()";
  46.     }
  47.  
  48.     ~Parser2()
  49.     {
  50.        qDebug() <<"Parser2::~Parser2()";
  51.     }
  52. };
  53. Q_DECLARE_METATYPE(Parser2)
  54.  
  55. void parse( const char* parserName )
  56. {
  57.      int id = QMetaType::type( parserName );
  58.      if (id != -1) {
  59.         Parser *parser = static_cast< Parser* >
  60.                          ( QMetaType::construct( id ) );
  61.         parser->parse();
  62.         delete parser;
  63.     }
  64. }
  65.  
  66. int main ( int argc, char* argv[] )
  67. {
  68.     qRegisterMetaType("Parser1");
  69.     qRegisterMetaType("Parser2");
  70.  
  71.     qDebug() << "###### Trying create Parser1";
  72.     parse("Parser1");
  73.  
  74.     qDebug() << "###### Trying create Parser2";
  75.     parse("Parser2");
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement