2012-04-01 16 views
2
void foo(ifstream &ifs) 
{ 
    //do something 
} 

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

上記のコードはコンパイルできません。fstreamオブジェクトでifstream &を初期化できないようですか?私はそれをこのように行う場合:ifstreamが期待されるifstreamで

foo(static_cast<ifstream>(fs)); 

または

foo(dynamic_cast<ifstream>(fs)); 
+1

最初は無関係のタイプです。 –

+3

ifstreamはfstreamを拡張しません。 fstreamとifstreamの両方がistreamを拡張しますが、それ以外のものは、Oliが言ったように、無関係です。 – Corbin

+0

@ Corbin、聖なる、私は 'ifstream'と' ofstream'が 'fstream'から派生したと考えました。 – Alcott

答えて

3

をおそらくあなたは(FOOをしたい)はistreamを取ります。コメントに示されているように、これはifstreamとfstreamの両方の基本型です。

関連する問題