我将有两个类功能。第一个类函数打开文件。然后它调用第二个函数,该函数写入文件并递归调用自身。当第二个函数完成时,原始函数将关闭文件。
是否可以这样做?
答案 0 :(得分:8)
当然,只要将文件句柄/对象传递给递归函数:
void recursion(int data, int maxdepth, ostream &os)
{
// must eventually break out
if (maxdepth == 0)
return;
// write data
os << data << std::endl;
// and call one deeper
recursion(data + 1, maxdepth - 1, os);
}
void start(const char *filename)
{
std::ofstream os(filename);
recursion(0, 100, os);
}
答案 1 :(得分:5)
是的,这完全有可能。
答案 2 :(得分:5)
是的,只要您的递归函数具有基本情况,它就会终止。
func2(int p) {
if (p == 0) return;
//write
func2(--p);
}
func() {
//open file
func2(10);
//close file
}
答案 3 :(得分:3)
是的,因为即使该序列是递归定义的,写调用也是顺序的。无论如何,文件对象只能看到写入调用的线性系列。
答案 4 :(得分:1)
是。 C ++或文件系统中的任何内容都不会阻止您这样做。