デバッグが難しいクラスがあります。好奇心は、ローカル変数として使用するとうまく動作しますが、グローバル変数として使用すると、プログラムの終了時にエラーが発生することです。
例えば:
A a;
int main(){
dosomething(a);
}
bad_alloc
プログラムの終了時に例外を発生させます。
その間
int main(){
A a;
dosomething(a);
}
うまくいきます。
これがどのような状況で起こり得るかを知ることで、クラスの問題の根底に到達できることを願っています. 私は多くのコンテキストでクラスを試しましたが、症状は常に同じです。グローバル変数には常に問題がありますが、ローカル変数は常にうまく機能します。
注 1flush
: クラスには、内部バッファーをディスクに書き込み、シェル コマンドを実行してそのファイルを処理する(非仮想) メンバー関数を呼び出すデストラクターがあります。
~A(){this->flush();}
注2:デバッグ(およびコードの簡素化)を続けながら、MWEを投稿しようとします。現時点では、これが正確に発生する可能性がある典型的なケースを知っておくと、デバッグに役立ちます。