Probleme mit ifstream
-
Ich hab irgendwie ein komisches Problem:
Ich will einen Text einlesen (unter verwendung von <fstream>), da besteht prinzipiell kein Problem, das Problem ist folgendes:
Ich habe eine headerdatei(die alle benötigten Blibliotheken enthält) für alle meine Klassen (wie auch der main):........ #include <conio.h> #include <windowsx.h> #include <cxcore.h> #include <fstream> //<<<<<<------- Beachte #endifüber
#include "header_blbalabala.h"include ich diesen Header also.
komischerweise ergibt
int main(int argc, char* argv[], char* envp[]){ ifstream file; ...........keinen Fehler.
Wenn ich jedoch versuche
#ifndef parameterinput_included #define parameterinput_included #include "headerellipsenauswertung.h" class Parameterinput { public: Parameterinput(); ~Parameterinput(); private: ifstream file; }; #endifkommt folgende Fehlermeldung:
: error C2146: syntax error : missing ';' before identifier 'file' : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int : error C4430: missing type specifier - int assumed. Note: C++ does not support default-intSieht doch so aus als könne er <fstream> nicht verwenden/erkennen....
Noch komischer ist dass jede andere Bibliothek sorgenfrei in alle Klassen funktioniert. Ich kappier's nicht...Aber ihr habt warscheinlich wie immer die Lösung parat

-
Versuch mal:
std::ifstream file;Und neun, du schreibst nicht
using namespace std;in den Header!
-
Achso, eventuell wird dein Header auch wegen den Include-Guards kein weiteres mal inkludiert. Grundsätzlich ist das mit der "globalen" Headerdatei vielleicht auch nicht so sinnvoll. Du brauchst ja nicht immer alle Header... Das könnte dir früher oder später auch zum Verhängnis werden - insbesondere falls du dort auch eigene Header inkludierst!
-
Erst einmal 1000 Dank. Das hat geholfen!
Gibt's ein Tutorial, wie man bei "schönem Programmierstil" Headerdatein schreiben sollte?
Oder hat mir jemand ein paar Grundregeln, an die ich mich halten sollte?Was ist so schlimm wenn ich eine globale Headerdatei habe und dort ALLE Blibliotheken include??
-
Lepetitmort schrieb:
Gibt's ein Tutorial, wie man bei "schönem Programmierstil" Headerdatein schreiben sollte?
Nein, aber ein paar grundlegende Regeln (und die haben nicht zwangsweise mit "schön" zu tun, sondern praktische Hintergründe) gibt es schon:
1. Inkludiere immer nur das was du benötigst, und nur wenn unbedingt nötig im Header (besser erst in der Sourcedatei). Nutze nach Möglichkeit Vorwärtsdeklaration (in bestimmen Fällen ist das Handle-Body-Idiom auch sinnvoll).
=> Linkzeiten
=> Reduzierung von Abhängigkeiten2. Verwende niemals ein using namespace im Header, und noch besser: Schreibe es so lokal wie möglich. using namespace im Header "öffnet" den Namensraum global, und wiederspricht dem Sinn von Namensräumen.
=> Vermeidung von Namenskonflikten.3. Nach Möglichkeiten (vor allem wenn es die Abhängigkeiten siehe 1 betrifft) sollten Methoden und Funktionen nur in der Sourcedatei implementiert werden.
=> Linkzeiten (Solange die Deklaration im Header nicht auch angefasst wird)
=> Teilweise Reduzierung der Notwendigkeit im Header andere zu inkludieren (siehe 1).
-
Ich werd mir Mühe geben viel von dem was du erwähnst umzusetzen.
VIELEN DANK AN ALLE
