пройти в fstream, где ожидается ifstream - PullRequest
2 голосов
/ 01 апреля 2012
void foo(ifstream &ifs)
{
    //do something
}

int main()
{
    fstream fs("a.txt", fstream::in);
    foo(fs); //error, can't compile
}

Приведенный выше код не может быть скомпилирован, похоже, я не могу инициализировать ifstream & с fstream объектом? Что если я сделаю это так:

foo(static_cast<ifstream>(fs)); 

или

foo(dynamic_cast<ifstream>(fs)); 

1 Ответ

3 голосов
/ 01 апреля 2012

Возможно, вы хотите, чтобы foo () приняла istream. Как указано в комментариях, это базовый тип для ifstream и fstream.

void foo( istream & is )

Для этих классов есть хорошая ссылка на cplusplus.com:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...