Как наследовать соответствующий класс с помощью динамической привязки?

#c #inheritance

#c #наследование

Вопрос:

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

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

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

Комментарии:

1. Вы имеете в виду создание экземпляра правильного производного класса?

2. В чем вопрос? Опубликуйте некоторый код, чтобы показать, что вы сделали.

Ответ №1:

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

 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;
  

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

Комментарии:

1. Хороший ответ на запутанный вопрос.