Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » fstream-Objekt innerhalb meines Objektes

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
21.04.2005, 09:47 Uhr
~knut
Gast


Hallo!

Ich möchte innerhalb einer Klasse ein Dateistrom-Objekt speichern und versuche das bisher so:


C++:
class MyClass
{
    [...]
    private:
        ifstream mSourceStream;
    [...]  
};

// Im Konstruktor wird dann an die Datei gebunden...
MyClass::MyClass ()
{
    [...]
    ifstream mSourceStream("test.in", ios::in);
    [...]
}

// Nun versuche ich in einer anderen Methode, auf die Datei zuzugreifen...
MyClass::aMethod ()
{
    char c;
    while (!mSourceStream.eof())
    {
        mSourceStream.get() >> c;
        cout << c;
    }
}



Nur leider scheint dann in der Methode "aMethod" der Zugriff auf den Dateistrom nicht mehr moeglich, es wird nichts ausgegeben. Wenn ich hingegen den gleichen Code zur Ausgabe im K'tor einsetze, funktioniert alles wunderbar.

Welchen doofen Fehler mache ich?
Danke!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
21.04.2005, 10:06 Uhr
ao

(Operator)


Du deklarierst im Konstruktor ein lokales Objekt mit Namen mSourceStream, das die gleichnamige Membervariable überdeckt. Das Member mSourceStream bleibt uninitialisiert und funktioniert darum in aMethod nicht.

Versuch mal was in der Art:

C++:
MyClass::MyClass ()
: mSourceStream ("test.in", ios::in) // Member über Initialisierungsliste einrichten.
{
}



ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
21.04.2005, 10:10 Uhr
Tommix



Hallo,
Du definierst im Ctor eine neue lokale Variable. Versuch mal

C++:
MyClass::MyClass () : mSourceStream("test.in", ios::in)
{
    [...]



Gruß, Tommix

Bearbeitung:

Doppelt hält besser

Dieser Post wurde am 21.04.2005 um 10:11 Uhr von Tommix editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
21.04.2005, 12:55 Uhr
~knut
Gast



Zitat von ao:
Du deklarierst im Konstruktor ein lokales Objekt mit Namen mSourceStream, das die gleichnamige Membervariable überdeckt. Das Member mSourceStream bleibt uninitialisiert und funktioniert darum in aMethod nicht.


Argh, klar. Mit der Initialisierungsliste funktioniert es natürlich!

Danke für die Entfernung des Brettes vor meinem Kopf ;-)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: