// To display a File, output prefix & name and newline
void File::Display(ostream & os, int level, const string & prefix)
{
os << level << ". " << prefix << m_name << endl;
}
// To display a Directory, output name and newline, then
// Display all of my contained Files using recursive call
void Directory::Display(ostream & os, int level, const string & prefix)
{
File::Display(os, level, prefix);
string newPrefix = prefix + getName() + ":";
DisplayChildren(os, level, newPrefix);
}
void Directory::DisplayChildren(ostream & os, int level, const string & prefix)
{
for (FileIter iter = m_FileList.begin();
iter != m_FileList.end();
iter++)
(*iter)->Display(os, level + 1, prefix);
}
Directory::~Directory()
{
while (!m_FileList.empty())
{
delete m_FileList.front();
m_FileList.pop_front();
}
}
int main()
{
Directory * dir = new Directory("TheDir");
dir->AddFile(new File("File 1"));
dir->AddFile(new File("File 2"));
dir->AddFile(new File("File 3"));
dir->AddFile(new File("File 4"));