我有 3 个类,Root、CFile、SubDirectory。Root 是一个抽象类。CFile 和 SubDirectory 是从 Root 派生的。CFile 具有属性:name:string、size:int、level:int。SubDirectory 有属性:name:string, size:int, level:int, 一个vector,包含文件和目录,还有一个函数void add() 将文件或目录推入vector。如果一个文件在目录中,文件的级别比目录的高一级。定义了所有的 setter 和 getter。
现在,我有一个名为 DirRead.h 的文件,它可以构造当前目录(计算机文件夹)中的所有条目。每个条目都有一个文件名、大小、级别和类型(文件或目录)。在主函数中,我被要求使用来自 DirRead 的信息作为输入来构建文件系统的层次结构(使用 CFile 和 SubDirectory)。DirRead.h 进行预购遍历。这种情况下不接受递归(我试过了,DirRead.h 报错)。我被要求使用堆栈来处理输入,但我不知道如何。显然水平在这里真的很重要。我试图创建一个堆栈并将所有文件和目录推入堆栈,然后比较级别以形成层次结构。但是 Root 没有 Add 功能,没有办法将 CFile 添加到 SubDirectory 中,因为它们都是 Root*。任何人都知道如何做到这一点?谢谢。