ここには、という名前のクラスの一部であるシスマ(すべての宣言は別ファイルにあります)があります。最初の関数は次の関数を呼び出すことになっています。これはいくつかのツリーを読み取る再帰関数です(Arbreはツリーのカスタム実装です)。C++ - 関数呼び出しでプログラムが失われる
プログラムの実行中に、関数呼び出しの直前に "関数を入力する"という行が表示されますが、「新しいノード」行は決して取得されません。だから私のプログラムは関数呼び出しと関数自体の間で、たとえ再帰呼び出しの前でもどこかで失われてしまいます。私は前にこのような問題はなかった。何が起こっているのかについての手がかりは?
#include "Sistema.hpp"
............
list<int> Sistema::proc_peticion(int pelicula, int tiempo, int tamano){
list<int> srv;
Arbre<int> arb = estructura;
bool unidad_tmp = false;
int dist = 0, bw = 0;
cout << "entering function" << endl;
camino(srv, arb, pelicula, tiempo, tamano, unidad_tmp, dist, bw);
return srv;
}
............
void Sistema::camino(list<int>& srv, Arbre<int>& arb, const int& pel, const int& tmp, const int& size, bool& unidad_tmp, int& dist, int& bw){
cout << "new node ";
if (not arb.es_buit()){
..................
}
}
私はそれを読みやすくするために、役に立つかもしれないコードの部分だけを残してみました:ここ
コードがあります。あなたが何かもっと必要なものがあれば教えてください。
あなたはC/C++でのファイルへの書き込み時に、事前
'cout <<"新しいノード "<< endl;' endlは行末+フラッシュを意味するので、コンソールにテキストが表示されます(または 'cout <<"新しいノード "<< flush"で十分かもしれません) – nothrow
http://stackoverflow.com/questions/213907/c-stdendl-vs-n – nothrow
Yossarianが追加されたときにendlを追加します。 Endlは新しい行を追加しますが、フラッシュも行います。 – Ras