- ベストアンサー
ifstreamについて
ifstream でファイルを読み込もうとしているのですが、上手くいきません。 ソース A.cpp #include"A.h" void Broker::read_file(ifstream in) { in >> shikin; } int main(void) { ifstream in; in.open("hoge.txt"); Broker b; b.read_file(in); b.show(); } A.h #include<fstream.h> #include<iostream.h> class Broker{ int shikin; int nensu; double nenri; int tesuryo; public: Broker() { shikin = 0; nensu = 0; nenri = 0.0; tesuryo = 0; } void read_file(ifstream in); void show() {cout << shikin << endl;} }; 以上のようなプログラムなのですが、 コンパイルすると エラー E2247 'ios::basic_ios(const ios &)' はアクセスできない(関数 ifstream::basic_ifstream(ifstream &) ) エラー E2125 コンパイラは 'copy constructor' クラスの istream を作成できない(関数 ifstream::basic_ifstream(ifstream &) ) とのエラーが出てきて実行できません。 コンパイラ C++Builder OS XP なにが原因なのかが分かりません。 本当に初心者な質問ですが、よろしくお願いします。 (何か足りない情報などがありましたら、お手数ですがその掲示板にお願いします)
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
とりあえずはBroker::read_fileがifstreamの参照を受けるようにすればよいはずです。 void Broker::read_file( ifstream& in ) ただ、kirin3_199さんは勉強にあたり古い本を使われてるようですね。 C++は数年前に大きな改定が行われています。 現行のC++は標準ライブラリの使い方がかなり変更されてるので気をつけてください。 一例をあげると、 旧:#include <fstream.h> 新:#include <fsstream> 旧:void read_file(ifstream& in); 新:void read_file(std::ifstream& in); この辺は基本を一通り勉強した後で、新しい内容の本で確認してください。 あと、コンストラクタでメンバを初期化するときは普通こうします(これは古いC++でも同じ)。 class Broker { //省略 public: Broker() : sikin(0), nensu(0), nenri(0.0), tesuryo(0) {} };
その他の回答 (1)
- MASATO3
- ベストアンサー率60% (27/45)
エラー行が書いていないので推測ですが、 void Broker::read_file(ifstream& in) ではないでしょうか。
お礼
丁寧なご解説ありがとうございました。