多くのファイル io 操作を使用して、C++ でプログラムを開発しています。プロジェクトのどこからでもアクセスできるように、共通ヘッダーで静的な ofstream を定義しました。コードの構造は次のとおりです。すべての共通変数は com.h で定義され、test.h と test.cpp は OPClass と呼ばれるクラス用であり、main.cpp はメイン プログラムを実行します。
COM.H:
#ifndef __CLCOM__
#define __CLCOM__
#include <sstream>
#include <fstream>
#include <iostream>
using namespace std;
static ofstream out;
static stringstream ss;
#endif
TEST.H:
#ifndef __CL__
#define __CL__
#include <iostream>
#include <fstream>
#include "com.h"
using namespace std;
class OPClass
{
public:
void run(void);
void show(ostream &o) const;
};
#endif
テスト.CPP:
#include "com.h"
#include "test.h"
void OPClass::run(void)
{
out << "Here is run()" << endl;
show(out);
}
void OPClass::show(ostream &o) const
{
o << "hello!" << endl;
}
メイン.CPP:
#include "com.h"
#include "test.h"
void runmain(void)
{
OPClass op;
out.open("output.txt", ios::out | ios::trunc);
out << endl << "State changed!" << endl;
op.run();
if (out.is_open()) out.close();
}
int main(int argc, char* argv[])
{
runmain();
return 0;
}
ご覧のとおり、静的な ofstream は out という名前で、メイン プログラムとクラスで呼び出されます。私は mingw32 を使用していますが、コンパイル時または実行時に問題は見られませんでした。しかし、runmain() の情報だけが出力ファイルに書き込まれるようです。クラス内のそのファイルに書き込まれた他のメッセージは、出力ファイルには表示されません。それはなぜですか?また、プロジェクトのどこからでもアクセスできるように、共通のファイル ストリームを作成するにはどうすればよいですか? ありがとう。