ファイルポインタの記述位置について – プログラミング – Home

ファイルポインタの記述位置について
 
通知
すべてクリア

[解決済] ファイルポインタの記述位置について


wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
Topic starter  

Win XP
VC++6 OR .NET2003
どちらも MFC WINアプリ ダイアログベース

アプリ概要
エディットBOXに文字列入力して、テキストファイルに単純追記していく
プログラムなのですが

その人それぞれの設計基準があるとは思いますが以下の質問させてください

ファイル出力のためのファイルポインタ(FILE *)は
MFCウィザードで生成された、DLG.HとDLG.CPPどちらに記述します
なお後付で記述する場合の話です

今はテストPGですが、後々には、ほかのPGと合体(ほかのPGの一部として)させ
たいです

CPPの場合であれば、fwriteを使う関数の中で記述しようと思ってます
ほかのPGの一部として動作させる場合、最低2つのクラスからこのダイアログクラスを
呼び出そうと思ってます

どうぞよろしくお願いします。


引用未解決
トピックタグ
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
Topic starter  

追加
1.fwriteを使う関数は、ファイルポインタを引数として受け取りたくないです
2.書き込みファイルパスは引数として受け取るのは可

訂正
>MFCウィザードで生成された、DLG.HとDLG.CPPどちらに記述します

MFCウィザードで生成された、DLG.HとDLG.CPPどちらに記述しますか


返信引用
アイススケーター
 アイススケーター
(@アイススケーター)
ゲスト
結合: 23年前
投稿: 280
 

内容からすると、私ならクラスの中に定義するのでDLG.Hに記述すると思います。

>1.fwriteを使う関数は、ファイルポインタを引数として受け取りたくないです

この条件が決めてです


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 600
 

FILE*の存在を利用者に知られたくないなら .cpp ですが。

--- foo.h ---
class foo {
public:
void save(std::string path) const;
...
}

--- foo.cpp ---
#icnlude <cstdio>
#include foo.h

void foo::save(std::string path) const {
FILE* fp = std::fopen(path.c_str(), w);
....
fclose(fp);
}


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

ファイルをOpenした状態で保持しておきたいかが鍵になりませんか?

ファイルをその都度Openしても良いなら、書き込み関数内に封じ込めた方が
すっきりすると思います。
少なくともそれ以外の場所でファイルポインタが云々考える必要が無いので。

ファイルをOpenした状態で保持しておきたいのであれば、
ダイアログクラスのヘッダファイルにprivate変数で定義するか、
ヘッダを提供したときにファイルポインターの存在を知られたくないなら
ソースファイルのグローバルにする手ですが、この場合は、関数内で記述する
と書かれているのでアウトですね。
そうなると、この場合ならヘッダファイルしかないですね。


返信引用
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
Topic starter  

επιστημηさん、PATIOさん ありがとうございます
この場合やはり「利用者のことを考え」cppで記述しようと思います
その場完結にしたいと思います

.H
に記述した場合、利用方法の誤りが発生しないとも限らないので
継承のされ方や、こちらの作り方しだいでは、ファイルオープンしっぱなしのまま
クラス終了する可能性があったものでしたから、まずはご相談させていただきました。

実際やることは無いと思うのですが、コンストラクタにファイルオープンを記述し
デストラクタでクローズ忘れなんて事故起こしちゃうかも?
なんて考えたりもしてました


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました