2013-10-05 110 views
0

我想在虚拟树/列表中存储文件/文件夹列表。也许是矢量或类似的。任何人都有一个想法如何管理这个?我有两种类型的项目:文件夹(节点)和文件。我必须模拟不同的子级别的文件夹。 它必须与Treeview相似。每个节点都可以有一个可以有子节点和堡垒的子节点。我需要有可能删除文件或文件夹(及其子文件夹&文件)。虚拟文件系统列表

也许一个链接或提示将有所帮助。

回答

0

你可以利用多态性。

class FileSystemElement{ 
... 
} 

class Folder: public FileSystemElement{ 
... 
public: 
    std::list<FileSystemelement*> subfolders; 
} 

class File: public FileSystemElement{ 
... 
} 

,然后也许是这样的:

class FileSystem{ 
public: 
    FileSystem(); 
    ~FileSystem(); 
    void removeFile(std::string path); 
    void addFile(std::string path, void* data, size_t size); 
    std::list<File*> filesInFolder(std::string path); 
    ... 
private: 
    std::list<FileSystemElement*> filesystem; 
} 

删除和添加可以如通过正常的std::listaddremove方法

+1

提示:使用复合设计模式并向基类添加一些基本功能。这样你可以编写简洁的代码。 –

+0

对不起我的坏。编辑 – hamon

+0

如果不考虑性能和嵌套路径查找,这是一个易于实现的可行想法。 –