Почему QDir::rmdir не является статическим?

QFile имеет статическую функцию

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

который удаляет указанный файл. Это удобно: у нас есть путь к файлу, и мы используем команду для его удаления. Однако у QDir такой команды нет, только вот эта:

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

который не является статическим и, следовательно, требует объекта. Поэтому я вынужден делать такие уродливые вещи, как

QDir().rmdir(path)

Это отвратительно. Я что-то упускаю?


person ScumCoder    schedule 13.12.2013    source источник
comment
Обратите внимание, что для аналогичных операций с QFile (копирование, переименование, удаление) создание объекта является единственным способом получить сведения об ошибке (errorString()) в случае, если функция возвращает false, таким образом создавая объект, который я считаю лучшей практикой. К сожалению, в QDir отсутствует errorString(). Хотя в идеале его бы добавили.   -  person Frank Osterfeld    schedule 13.12.2013
comment
Что делает эта статическая функция QFile::remove(), так это то, что она создает объект QFile так же, как вы делаете с QDir: .cpp#L674" rel="nofollow noreferrer">QFile(fileName).remove();.   -  person thuga    schedule 13.12.2013


Ответы (1)


Вы можете получить класс QDir и добавить свой статический метод.

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

      static bool remove ( const QString & dirName ) {
            return QDir().rmdir(dirName);
      }
 };
person Marcus    schedule 13.12.2013