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