Обяснявай по-внимателно колега.
1. Какво общо има Qt в случая - освен един параметър който спокойно може и да е std::string вместо QString ?
Питам защото предполагам какъв е проблема, но не обичам да гадая.
2. За какво ти е точно по този начин?
drive::getHarddriveFreeSpace("/dev/sdb1").toMb();
Така както си дал примера е крайно неподходящ... обяснението също
Това което искаш (да връща свободното място в Мб) може да се направи по няколко начина:
1) Съдейки по примера предполагам класът си е твой а не от Qt.
class drive{
public:
int getHarddriveFreeSpace(QString drive);
int getHarddriveFreeSpaceInMb(QString drive);
}
2) Ако не е твой и не можеш да го променяш - както е доста често в случаите с Qt: имаш базов клас който трябва да наследиш и промениш малко, но за да може да работи Qt средата с него ще трябва да е през указател към базовия. За да ти мине номера в този сл. трябва методът да е виртуален в базовия т.е. и във всички наследници, но дори и тогава няма да стане както искаш а ще трябва да се извиква с напр.
int i =derived_drive.getHarddriveFreeSpace("C:");
т.е. не можеш да промениш интерфейса му в базовия клас да връща обект ами ще си връща int и това е, а на int не можеш да му викаш метод toMb()

3) Това което искате
drive::getHarddriveFreeSpace("/dev/sdb1").toMb();
може да се направи с 3 или 2 класа според зависи дали можете да променяте изходния class drive
Трябва Ви само още един
статичен метод със същата сигнатура getHarddriveFreeSpace("/dev/sdb1") във drive или derive_drive но с различен тип връщана ст-т който си дефинирате сам напр.
class octets с метод int toMb();
и тогава сме най-близко до това което искате съответно извикването ще е
drive::getHarddriveFreeSpace("/dev/sdb1").toMb();
derived_drive::getHarddriveFreeSpace("/dev/sdb1").toMb();
което всъщност е съкратен запис на:
octets o = derived_drive::getHarddriveFreeSpace("/dev/sdb1");
o.toMb();
на който не знам защо толкова много държиш да е с един derived клас па той с единия метод статичен па другия не, аз лично бих ползвал 1)