Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: fstream::getline() ?

JussiH [30.10.2007 09:33:22]

#

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) ) {
...
}

temu92 [30.10.2007 14:41:22]

#

Ihan vaan villi veikkaus mutta luokissahan on ne public, private ja protected jos se vaikuttas asiaan...

Mazzimo [30.10.2007 15:43:20]

#

http://www.cplusplus.com/reference/iostream/istream/getline.html

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 ) ) ...

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta