Как наследовать соответствующий класс, используя динамическое связывание? - PullRequest
0 голосов
/ 12 мая 2011

У меня есть программа с абстрактной базой class FILEPARSER, которая имеет два виртуальных метода read() и print(). Два класса, унаследованных от этого базового класса: XMLPARSER и CONFIGPARSER, которые будут реализовывать методы.

основная программа должна принимать тип файла "config" или "xml" и наследовать соответствующий класс для этого типа?

принятие параметров из командной строки.

1 Ответ

2 голосов
/ 12 мая 2011

Вам придется явно создать правильный класс (псевдокод):

FileParser* parser = 0;
ParserType type = //retrieve the type you need
switch( type ) {
case ParserTypeConfig:
    parser = new ConfigParser();
    break;
case ParserTypeXml:
    parser = new XmlParser();
    break;
default:
    //handle error
};

//then at some point you use the created object by calling virtual functions
parser->read(blahblahblah);
parser->print();

// and then at some point you delete the heap-allocated object
delete parser;
parser = 0;

Конечно, вы должны использовать умный указатель для обработки выделенного кучи объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...