Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Segmentation Fault, ifstream in Klasse

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.02.2006, 14:59 Uhr
AndreasB



Ich arbeite mit Dev C++, ich habe eine Klasse in der auf eine Datei zugegriffen werden soll. Aber wenn ich etwas mit ifstream in der Klasse deklarier stützt das Programm einfach ab. Beim Debuggen erscheint die Meldung "Segmentation Fault".

Wenn ich die Deklaration oberhalb der Klasse vornehme stürzt es erst bei Dateizugriffen ab. also was ich jetzt in diesem Code nicht mache.

Es gibt nur eine Instanz der Klasse im ganzen Programm. Das könnte noch wichtig sein, habe so etwas gelesen, aber nicht verstanden...

main.cpp

C++:
#include <stdio.h>
#include <stdlib.h>
#include "image.h"

int main()
{
    Fileimage *datei; //Hier tritt der Fehler auf

    datei->open("image.bin");
    
    datei->close();
    
    system("Pause");
    return 0;
}



image.h (gekürzt)

C++:
#include <fstream>
using namespace std;


class Fileimage
{
    private:
        ifstream fp;
    
    public:
        void open(const char *name);
        void close();

};

void Fileimage::open(const char *name)
{
     fp.open(name, fstream::in | fstream::binary);  
     if (!fp)
     {
         fprintf(stderr, "Konnte Image \"%s\" nicht öffnen!\n", name);
         exit(1);
     }
     printf("Test 1\n");
     //Lesen, Variabeln und so sind Deklariert...
     typcount=fp.get();
     printf("Test 2\n");
}

void Fileimage::close()
{
     fp.close();
}




mfg Andreas

Dieser Post wurde am 21.02.2006 um 15:00 Uhr von AndreasB editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
21.02.2006, 15:12 Uhr
virtual
Sexiest Bit alive
(Operator)



C++:
int main()
{
    Fileimage *datei; //Hier tritt der Fehler auf

    datei->open("image.bin");
    
    datei->close();
    
    system("Pause");
    return 0;
}


Nein, der Fehler tritt eine Zeile darunter auf. Das liegt daran, daß datei nicht initialisiert ist.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
21.02.2006, 15:33 Uhr
AndreasB



Wie muss ich es denn korrekt initialisieren?

Ich habe bis jetzt nur wenig mit C++ gearbeitet.

mfg Andreas
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
21.02.2006, 16:00 Uhr
virtual
Sexiest Bit alive
(Operator)


Na, du musst Datei eben ein Objekt zuweisen, zB

C++:
datei = new Fileimage;
...
// Am Programm ende nicht vergessen:
delete datei;


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
21.02.2006, 16:11 Uhr
AndreasB



Danke für die schnelle Antwort.

mfg Andreas
 
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: