前提・実現したいこと
度々 お世話になっております。よろしくお願いいたします。
現在、バイナリファイルを読み込み、解析してテキストファイルへ出力するプログラムを作成中です。
取り合えず、バイナリファイルを指定バイト数readしようとしています。
以下2つを目標としています。
①readは"ALL"の内部クラスである"A"のread()関数で実装
②内部クラスの"A"にあるメンバ変数へreadした値を格納
質問内容
クラスの構成は、極力変えずに
内部クラスのメンバ変数、メインクラスのメンバ変数をうまく利用し、
ファイルを読み込んで、Aクラスのメンバ変数に値を格納したいです。
恐らく、内部クラスとメインクラスの相互関係が分かっていないのだと思っています。
内部クラス内で外部クラスのメンバ変数を利用したい。
また、メインクラスのメンバ変数を内部クラス内で利用したい。
ここが理解できれば、、、と思っております。
発生している問題・エラーメッセージ
read()関数で以下のエラーメッセージが発生しました。
void ALL::read(){ file.read((char*)&a.Size, 4); //error!! "fileは識別子が定義されていない" cout << a.size << endl; //error!! "aは識別子が定義されていない" }
該当のソースコード
/* 内部クラスのメンバ変数の使い方 実験 */ #include<iostream> #include<fstream> #include<string> using namespace std; class A{ private: int size; char s[3]; long height; public: void read(); void write(); }; class ALL{ public: A a; //class Aをaとして宣言 private: std::ifstream file; std::ofstream outfile; public: void open(); void close(); //void write(); //書き込みはどうするかきまっていない }; void ALL::open(){ file.open("FileName", ios::in | ios::binary); } void A::read(){ file.read((char*)&a.Size, 4); cout << a.size << endl; } /*void ALL::write(){ cout << a.size << endl; }*/ int main(void){ // Your code here! ALL all; if(all.open()!==false){ a.read(); //a.write(); all.colse(); }else{ cout <<"error!"<<endl; } return 0; }
ご教授お願い致します。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/05 02:46