Yritän periyttää fstream luokasta omaa file stream luokkaa. Mutta törmäsin ongelmaan, jossa periytetyssä luokassa getline metodin kutsu ei toimi vaan tulee virhe:
Error E2285: Could not find a match for 'istream::getline(fstream
,string)' in function ... (Borland C++ Builder 5.5)
class myfstream : public fstream { ... public: void replaceLine() { string row; ... while ( getline((fstream)(*this), row) ) { ... }
Jotenkin tuo fstream luokan periyttäminen lienee ongelmana, koska muuten tämän tapainen toimii kyllä:
... fstream fs; string row; while ( getline(fs, row) ) { ... }
Ihan vaan villi veikkaus mutta luokissahan on ne public, private ja protected jos se vaikuttas asiaan...
http://www.cplusplus.com/reference/iostream/
Kuten huomaat, parametrit ovat hieman vääriä.
EDIT: Käytätkin siis funktiota getline, et istream::getline-metodia. Et voi castata omaa oliotasi uudeksi olioksi, ainoastaan viittaukseksi ja osoittimeksi. Pääpiirteittäin C++ osaa castata lapsen vanhemmakseen automaattisesti. Siispä:
while( getline( *this, row ) ) ...
Aihe on jo aika vanha, joten et voi enää vastata siihen.