2015-04-12 4 views
-1

Я написал следующий код. Один из этих методов проверяет, можно ли получить доступ к сигнальному файлу, а другой - проверить, существует ли фоновый файл.Могу ли я объединить эти 2 метода/функции в один?

bool signalFileExist(string signalFile){ 
    ifstream f(signalFile.c_str()); 
    if(f.good()){ 
     f.close(); 
     return true; 
    } 
    f.close(); 
    return false; 
} 

bool backgroundFileExist (string backgroundFile){ 
    ifstream f(backgroundFile.c_str()); 
    if(f.good()){ 
     f.close(); 
     return true; 
    } 
    f.close(); 
    return false; 
} 

Мой вопрос: могу ли я объединить эти два метода в один? Кроме того, мне нужно будет сообщить пользователю, какой из файлов плох, если он не может быть проверен. Можно ли написать метод таким образом, который это сделает?

+2

Они уже представляют собой ту же функцию. Единственное различие между ними - это имя функции и имена параметров. Это зависит от вызывающего, если они передают имя сигнальному файлу или фоновому файлу. – Galik

+0

Ваш компоновщик может * уже * объединить эти две функции в одну. Они производят одну и ту же последовательность инструкций. –

+0

нет, вы не можете. компилятор никогда не узнает разницу между строками «backgroundFile» и «signalFile» без вашей помощи. – gaussblurinc

ответ

4

Они ... точно такие же методы?

Вы можете просто удалить любого из них, и переименовать другое что-то вроде:

bool fileExists(string fileName){ 
    ifstream f(fileName.c_str()); 
    if(f.good()){ 
     f.close(); 
     return true; 
    } 
    f.close(); 
    return false; 
} 

Если вы хотите, чтобы сообщить пользователю, какой файл является плохим в случае ошибки, вы можете сделать это внутри потому что у вас есть имя файла, или вы можете сделать это на сайте вызова.

+0

как файл.fail() работа? – Channing

+1

'f.close()' совершенно не нужно. Эта функция может быть просто записана как 'return ifstream (filename.c_str()). Good();' Также 'fileName' должен быть передан const ref или даже лучше передать непосредственно' const char * ' – sbabbi

Смежные вопросы