2017-08-04 3 views
-5

Je fais un programme avec plusieurs fonctions: le fichier est souligné dans l'appel en disant qu'il ne peut pasRéférence de flux utilisant une chaîne?

int main() 
{ 

int employeesNumber = employees(); 
string fileName = "employeeAbsences.txt"; 

employees(); 

totalDays(fileName, employeesNumber); 

être:

int totalDays(ofstream &outputFile, int noEmployee) 
{ 
string fileName = "employeeAbsences.txt"; 

outputFile.open(fileName); 

Cependant, je ne sais pas comment l'appeler chaîne. Quel nom suis-je censé appeler la première fonction avec ??

+3

Vous essayez de passer 'std :: string' lorsque la fonction prend' std :: ofstream'. Qu'espériez-vous arriver? – DimChtz

+0

Pourriez-vous s'il vous plaît m'aider sur la façon d'appeler la fonction? – deadth

+1

Vous devez également transmettre le nom du fichier. –

Répondre

2

Déclarons (et définir) la fonction correctement:

void totalDays(std::ofstream& outputFile, 
       int employee_quantity, 
       const std::string& filename) 
{ 
    outputFile.open(filename.c_str()); 
    //... 
} 

Maintenant, pour l'appeler:

std::ofstream outputFile; 
totalDays(outputFile, employeesNumber, fileName); 

Votre fonction totalDays a besoin de passer de nouveau à main le fichier de sortie (flux) et a besoin du nom du fichier pour ouvrir le fichier. Donc, vous devez transmettre ces éléments à votre fonction.

+0

Merci beaucoup! – deadth

2

Le premier paramètre de votre fonction de totalDays() est une référence à un objet ofstream, mais vous passez une chaîne (le nom de fichier). Cela ne compilera pas comme vous le signalez.

Dans main(), instanciez un objet ofstream et transmettez cet objet en tant que premier argument de votre fonction totalDays().

+0

Merci pour les pointeurs! – deadth