Problem: Kompiler sagt: Mehrdeutiger Aufruf einer überladenen Funktion
-
Hallo,
haben folgendes Programm geschrieben
#include "stdafx.h" #include <algorithm> #include <iostream> #include <string> #include <iomanip> #include <vector> #include <fstream> using namespace std; void datei_lesen(ifstream&, vector<string>&); void maxzeilenlaenge(string::size_type&, vector<string>&); void ausgabe(string::size_type&, string::size_type&, vector<string>&); void datei_lesen(ifstream& datei_einlesen, vector<string>& datei) { if (!datei_einlesen) { cout << "Datei kann nicht geoeffnet werden, vielleicht stimmt der Dateipfad oder Dateiname nicht \n"; } else { string zeile; while (getline (datei_einlesen, zeile)) datei.push_back(zeile); } } void maxzeilenlaenge(string::size_type& maxstring, vector<string>& datei){ maxstring = 0; vector<double>::size_type groesse = datei.size(); for(vector<string>::size_type i = 0; i != groesse; ++i) { maxstring = max(maxstring, datei[i].size()); } } void ausgabe(string::size_type& maxstringlaenge, string::size_type& leerzeichen, vector<string>datei) { vector<double>::size_type groesse = datei.size(); string::size_type zeilen, spalten; spalten = (maxstringlaenge + (1 + leerzeichen) * 2); zeilen = (groesse + (1 + leerzeichen) * 2); for(vector<string>::size_type z = 0; z != zeilen; ++z) { string::size_type s = 0; while (s != spalten) { if(z == 0 || z == (zeilen - 1) ){ cout << "*"; ++s; } else { if ((z != 0 && z <= leerzeichen) || (z != zeilen -1 && z >= (zeilen - leerzeichen - 1))) { if(s == 0 || s == (spalten -1)) { cout << "*"; ++s; } else { cout << " "; ++s; } } else { if(s == 0 || s == (spalten)-1){ cout << "*"; ++s; } else { string::size_type leerz_vortextanzahl, leerz_nachtextanzahl; leerz_vortextanzahl = ((spalten - 2) - datei[z - 1 - leerzeichen].size())/2; leerz_nachtextanzahl =((spalten - 2) - datei[z - 1 - leerzeichen].size()-leerz_vortextanzahl); string leer_vor(leerz_vortextanzahl, ' '); string leer_nach(leerz_nachtextanzahl, ' '); string stringzeile = leer_vor + datei[z - 1 - leerzeichen] + leer_nach; cout << stringzeile; s += stringzeile.size(); } } } } cout << endl; } } int main() { vector<string> datei; string dateiname; string::size_type maxstringlaeng = 0; cout << "Bitte geben Sie das Verzeichnis und den Dateinamen ein: "; cin >> dateiname; ifstream datei_einlesen(dateiname.c_str()); datei_lesen(datei_einlesen, datei); maxzeilenlaenge(maxstringlaeng, datei); // vector<double>::size_type groesse = datei.size(); string::size_type leerzeichen; leerzeichen = 3; ausgabe(maxstringlaeng, leerzeichen, datei); }Find den Fehler nicht: Kompiler sagt, Mehrdeutiger Aufruf einer überladenen Funktion, aber ich hab gar keine Funktion überladen oder doch?
Hoffe einer findet den Fehler, hab zwar ne Programmversion wo alles funzt aber dann ist hab ich die Ausgabe im main Programm und nicht in eine Funktion gepackt
-
Schön. Und?

Tipp: Bei der Definition von ausgabe fehlt ein &, und diese Info gibts jetzt auch nur weil ichs zufällig direkt gesehen habe.
Tipp2: Nächstes Mal bitte mindestens ne Zeilenangabe wo der Fehler auftritt, besser die komplette Fehlermeldung AUF ENGLISCH.
-
ja sorry ist mir grad aufgefallen, dass ich das net mitgepostet habe, sorry
