2013-12-13 88 views
2

QFile具有靜態函數爲什麼QDir :: rmdir不是靜態的?

bool QFile::remove (const QString & fileName) [static]

這將刪除指定的文件。這很方便:我們有一個文件路徑,我們使用一個命令來刪除它。然而,QDir不具有這樣的命令,僅這一項:

bool QDir::rmdir (const QString & dirName) const

其是非靜態的且因此要求的對象。所以我被迫做了醜陋的東西像

QDir().rmdir(path)

這是令人厭惡的。我錯過了什麼嗎?

+3

需要注意的是對一個QFile類似操作(複製,重命名,刪除),創建一個對象的情況下,得到錯誤的詳細信息(Errorstring,則())的唯一途徑函數返回false,從而創建一個對象,我認爲那裏的最佳實踐。 QDir遺失了errorString(),遺憾的是。理想情況下,它會被添加。 –

+3

這個靜態QFile :: remove()函數做了什麼,它創建了一個'QFile'對象,就像你使用'QDir'一樣:['QFile(fileName).remove();'](https:// qt.gitorious.org/qt/qt/source/57756e72adf2081137b97f0e689dd16c770d10b1:src/corelib/io/qfile.cpp#L674)。 – thuga

回答

0

您可以派生類QDir並添加您的靜態方法。

class MyQDir : public QDir { 
     // Define constructors/destructor 

     static bool remove (const QString & dirName) { 
      return QDir().rmdir(dirName); 
     } 
}; 
相關問題