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.