2013-10-05 153 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

如果不考慮性能和嵌套路徑查找,這是一個易於實現的可行想法。 –