error: variable `std::ifstream inputstream' has error: variable 'std::ifstream df' has initializer but incomplete type
-
Obige Meldung wird mir zu folgendem Code geliefert:
#include <iostream> using namespace std; [...] const char* inputfilename = "input.dat"; ifstream df(inputfilename); //<-- was ist daran "incomplete type"??
Kann mir jemand n Hinweis geben, worans liegen könnte?
Grüße
Pumu
-
fstream include
-
Und am Besten gleich noch std::string verwenden
#include <iostream> #include <fstream> #include <string> using namespace std; ... string inputfilename = "input.dat"; ifstream df(inputfilename.c_str()); ...
-
pZy: Sinn?
-
Standard?
Erweiterbarkeit?
Postings ehöhen?
-
autsch.
Danke für den Hinweis...pZy: am ehesten letzteres. Gegen Standard spricht, dass der Ctor keinen String sondern einen char* erwartet. Wenn ichs erweitern will, kann ich mir später immernoch n String draus machen. Wenn ich aber Ausführungszeit sparen will (wenn auch nur minimal), lass ichs dann doch lieber...
-
Gegen Standard spricht, dass der Ctor keinen String sondern einen char* erwartet.
Nicht doch.
explicit basic_ifstream( const char *_Filename, ios_base::openmode _Mode = ios_base::in );
Platz genug ist da fuer
template<...> const value_type* basic_string<value_type>::c_str( ) const;
alle Mal.
-
natürlich kann man das machen... und wenn man irgendwo einen simplen int braucht, kann man den auch erst in eine super-zahlenklasse verwandeln, der alles kann, was man in dem Zusammenhang nicht braucht. Und wenn man ihn dann nach drei Zeilen an eine Funktion liefert, die int braucht, muss man eben die Konvertierungsmethode benutzen.
Was ich damit sagen will: es ist schlicht und ergreifend sinnlos und Overkill, wenn man einen String benutzt, wo ein char* keine Einbußen an Bequemlichkeit bedeutet.
-
Ok, ich gebs zu.
Es ist schon ein Overkill in 3 Zeilen Code, aber ich hasse "char* x =..." oder "char[] x =..." einfach.Nichts für Ungut, meine Meinung.