Hallo, ik heb een lijst van ostream objecten, waarvan sommige ofstream
objecten zijn. Hoe kan ik deze herkennen? Via runtime type information?
Ik wil namelijk de ofstream objecten sluiten.
hier is een codevoorbeeld van wat ik probeer te implementeren:
list<ostream*> outputstreams;
//..vul lijst met allerlijk ostream objecten waaronder ofstream objs
list<ostream*>::iterator it = outputstreams.begin();
while(it!=outputstreams.end()) {
//als **it een ofstream object is, sluit hem dan...
ofstream* p_ofs = dynamic_cast<ofstream*> *it;
if(p_ofs)
p_ofs.close();
it++;
}
Ik heb ge-grep-ed onder /usr/include naar "dynamic_cast" maar ik heb
de functie niet gevonden, en mijn compiler herkent de functie
niet...(parse error)
Mijn vragen zijn de volgende:
1-weet iemand of dit een goede aanpak is voor dit probleem, zo nee,
waarom dan wel niet ;-)
2-RTTI maakt wel deel uit van standaard c++, zie bijvoorbeeld
http://documentation.capt...ok/ch07/ch07.htm#Heading7
maar is het ook geimplementeerd onder de GNU compiler ?
Ik zie bijvoorbeeld onder /usr/include/g++-v3/typeinfo wel een
implementatie van typeid, maar ik heb dynamic cast nodig...
Hopelijk kan iemand me helpen!
Groeten,
Dede
ook gepost naar nl.comp.os.linux.programmeren, ben van nature ongeduldig :-)
objecten zijn. Hoe kan ik deze herkennen? Via runtime type information?
Ik wil namelijk de ofstream objecten sluiten.
hier is een codevoorbeeld van wat ik probeer te implementeren:
list<ostream*> outputstreams;
//..vul lijst met allerlijk ostream objecten waaronder ofstream objs
list<ostream*>::iterator it = outputstreams.begin();
while(it!=outputstreams.end()) {
//als **it een ofstream object is, sluit hem dan...
ofstream* p_ofs = dynamic_cast<ofstream*> *it;
if(p_ofs)
p_ofs.close();
it++;
}
Ik heb ge-grep-ed onder /usr/include naar "dynamic_cast" maar ik heb
de functie niet gevonden, en mijn compiler herkent de functie
niet...(parse error)
Mijn vragen zijn de volgende:
1-weet iemand of dit een goede aanpak is voor dit probleem, zo nee,
waarom dan wel niet ;-)
2-RTTI maakt wel deel uit van standaard c++, zie bijvoorbeeld
http://documentation.capt...ok/ch07/ch07.htm#Heading7
maar is het ook geimplementeerd onder de GNU compiler ?
Ik zie bijvoorbeeld onder /usr/include/g++-v3/typeinfo wel een
implementatie van typeid, maar ik heb dynamic cast nodig...
Hopelijk kan iemand me helpen!
Groeten,
Dede
ook gepost naar nl.comp.os.linux.programmeren, ben van nature ongeduldig :-)