2017-08-04 2 views
-5

Ich bin ein Programm mit mehreren Funktionen machen:Ofstream Referenz mit Zeichenfolge?

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

outputFile.open(fileName); 

Aber ich weiß nicht, wie es nennen:

int main() 
{ 

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

employees(); 

totalDays(fileName, employeesNumber); 

der Dateiname im Aufruf unterstrichen wird sagen, dass es nicht sein, kann Zeichenfolge. Welchen Namen soll ich die erste Funktion nennen ??

+3

Sie versuchen, 'std :: string 'zu übergeben, wenn die Funktion' std :: ofstream' verwendet. Was hast du erwartet? – DimChtz

+0

Könnten Sie mir bitte helfen, wie ich die Funktion anrufe? – deadth

+1

Sie müssen den Dateinamen auch übergeben. –

Antwort

2

Lassen Sie uns erklären (und definieren) die Funktion richtig:

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

Jetzt ist es nennen:

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

Ihre totalDays Funktion die Ausgabedatei (Strom) muss main und es passieren zurück benötigt den Namen der Datei, um die Datei zu öffnen. Sie müssen diese Elemente also an Ihre Funktion übergeben.

+0

Vielen Dank! – deadth

2

Der erste Parameter Ihrer totalDays() -Funktion ist eine Referenz auf ein ofstream-Objekt, Sie übergeben jedoch eine Zeichenfolge (den Dateinamen). Dies wird nicht kompiliert, wie Sie berichten.

In main() sollten Sie ein ofstream-Objekt instanziieren und dieses Objekt als erstes Argument an Ihre totalDays() - Funktion übergeben.

+0

Danke für die Hinweise! – deadth