#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. Хороший ответ на запутанный вопрос.