class Parent;
class Child;
Parent *parent;
ifstream inf("file.csv");
inf >> *parent;
//in parent class
friend istream& operator>> (istream &is, Parent &parent) {
return parent.read(is);
}
virtual istream& read(istream &is){
char temp[80];
is >> temp;
// then break temp into strings and assign them to values
return is;
}
//virtual istream& read
Он читает и присваивает только первые два значения родительскому классу. Класс Child
имеет Parent
значения класса + 3 собственных.
Как я могу вызвать родительскую функцию read()
, а затем дочернюю функцию read()
, чтобы родительская функция считывала первые 2 поля в файле, а дочерняя считывала следующие 3 поля?
Я знаю, что это вопрос синтаксиса; Я просто не могу понять, как это сделать. Я пытался вызвать Parent::read(is)
внутри дочернего класса чтения, я пытался вызвать его перед дочерним read()
; Я пробовал read(is) >> temp
, но ни один из них не работал. Когда я вызывал Parent::read(is)
, а затем is >> temp
, родительский is
возвращал все 5 значений файла.
a,b,c,d,e,g,df,ds,vd,bn
переменные.. это плохой стиль. пожалуйста, напишите что-то вроде этого:in_file
(не могу понять, но предположим, что это входной файл) илиinput_file
илиinputFile
или и т.д... - person gaussblurinc   schedule 04.06.2012Child c; Parent(c).read() /* should invoke Parent method */; c.read() /* should invoke Child method */;
. Я предполагаю здесь, что Child наследует от Parent, хотя объявления в вопросе не указывали на это. - person Bob Jarvis - Reinstate Monica   schedule 04.06.2012