这里我有一段代码,它是名为 Sistema 的类的一部分(所有声明都在一个单独的文件中)。第一个函数应该调用下一个函数,这是一个读取某个树的递归函数( Arbre 是 tree 的自定义实现)。
在运行程序时,输出显示“进入函数”行,就在函数调用之前,但我从未得到“新节点”行。因此,即使在任何递归调用之前,我的程序也会在函数调用和函数本身之间丢失。我之前从未遇到过这样的问题。关于发生什么事的任何线索?
以下是代码:
#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()){
..................
}
}
我试图只留下可能有用的代码部分,以使其更具可读性。如果您需要更多信息,请告诉我。
提前致谢
答案 0 :(得分:4)
你应该在camino函数中编写一个endl,当你用C / C ++写一个文件时,数据不一定写入文件,而是放在内存缓冲区中直到它被填满或被明确写入(刷新) )到磁盘。
这里可能发生的是写入正在发生,程序继续并在函数内部挂起。如果你不想写一个endl(执行写操作),你可以在之后调用cout.flush()
。