C++ 虚拟文件系统列表

C++ 虚拟文件系统列表,c++,c,C++,C,我想在虚拟树/列表中存储文件/文件夹列表。可能是向量或类似的。有人知道怎么处理吗?我有两种类型的项目:文件夹(节点)和文件。我必须模拟文件夹的不同子级别。 它必须类似于树视图。每个节点都可以有一个子节点,子节点可以有一个子节点,等等。我需要有可能删除一个文件或文件夹(及其子文件夹&文件) 也许一个链接或提示会有所帮助。您可以利用多态性 class FileSystemElement{ ... } class Folder: public FileSystemElement{ ... publi

我想在虚拟树/列表中存储文件/文件夹列表。可能是向量或类似的。有人知道怎么处理吗?我有两种类型的项目:文件夹(节点)和文件。我必须模拟文件夹的不同子级别。 它必须类似于树视图。每个节点都可以有一个子节点,子节点可以有一个子节点,等等。我需要有可能删除一个文件或文件夹(及其子文件夹&文件)


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

您可以利用多态性

class FileSystemElement{
...
}

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

class File: public FileSystemElement{
...
}
类文件系统元素{
...
}
类文件夹:公共文件系统元素{
...
公众:
std::列出子文件夹;
}
类文件:公共文件系统元素{
...
}
然后可能是这样的:

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;
}
类文件系统{
公众:
文件系统();
~FileSystem();
void removeFile(std::string路径);
void addFile(标准::字符串路径,void*数据,大小);
std::list fileinfolder(std::string路径);
...
私人:
列表文件系统;
}

例如,可以通过常规的
std::list
add
remove
方法进行删除和添加提示:使用复合设计模式并向基类添加一些基本功能。如果不考虑性能和嵌套路径查找,这是一个易于实现的可行想法。