Datei ein-/auslesen in static Library's

cache

Grünschnabel
Hallo zusammen, meine frage ist wie ich in einer statischen bibliothek mit dateiverarbeitung hantiere ( ein und auslesen aus einer .txt ). sowohl beim benutzen der Bibliothek von einem Programm, als auch das benutzen des Objektes in den statischen funktionen.

Problem:
ich soll für die uni im fach Betriebssysteme ein kleines dateisystem schreiben, was in einer datei abgelegt ist und durch eine statische bibliothek verwaltet wird, welche wiederrum von mehreren Programmen benutzt wird. ich habe schon eine menge mit c++ gemacht, allerdings noch nichts mit statischen bibliotheken. das problem ist, da der Konstruktur ja nicht automatisch aufgerufen wird, dass ich keine ahnung habe wie ich beim starten des Programms bzw der Bibliothek die Datei automatisch einlese und beim beenden wieder automatisch zurückschreibe (und jedes mal in den Programmen die die Bibliothek benutzen eine extra funktion aufzurufen ist mir zu umständlich, bzw vermute ich dass es auch leichter geht. ) Aber davon mal abgesehen: in den static funktionen kann ich das objekt für die dateiverwaltung nicht benutzen: "THINFS.h:37: error: invalid use of member ‘THINFS::FS’ in static member function" ( -> FS ist das Objekt zur Dateiverwaltung vom typ fstream )
Wie kann ich das Objekt in den Funktionen benutzen?

schonmal vielen dank für eure hilfe
 
Aber davon mal abgesehen: in den static funktionen kann ich das objekt für die dateiverwaltung nicht benutzen: "THINFS.h:37: error: invalid use of member ‘THINFS::FS’ in static member function" ( -> FS ist das Objekt zur Dateiverwaltung vom typ fstream )
Wie kann ich das Objekt in den Funktionen benutzen?

Moin,

poste doch mal Deinen Code, damit wir hier nicht rum raten müssen!

Gruß
Klaus
 
also, hier ist mal die headerdatei der bibliothek. in der .cpp steht noch so gut wie nichts.

Code:
#include<map>
#include<fstream>
#include<string>
#include<iostream>
using namespace std;

class THINFS {
public:
    THINFS();
    THINFS(const THINFS& orig);

    static int open( char *filename, int flags 	);
    static int close( int fd );
    static int read( int fd,  void *buf, int count);
    static int write( int fd, void *buf, int count);

    static void print();
    virtual ~THINFS();

    static std::map<string, short int> StartTable;
    static std::map<short int, short int> FileAllocationTable;
    fstream File;
    static int test;
    
    char* filename;
    int flags, fd, count;
    void* buf;
};

wie ich die staticfunktionen in der main benutze weiß ich, ebenso das static int test. aber ich würde gerne zb in der funktion "static int open(..)" auf die maps zugreifen.
ich hatte es zuerst ohne das static vor der deklaration probiert, aber so kann mans wohl vergessen. mit dem static sagt er mir aber immer dass es eine undefinierte referenz ist. Außerdem würde ich gerne noch auf "fstream File" zugreifen können um die daten aus der imaginären Festplatte zu laden und wieder dorthin zurück zu speichern.

und zum verständnis, hier die zeile aus einer staticmethode:
Code:
for(int i = 0; i< 1024; i++)
        THINFS::FileAllocationTable[i] = -1;

antwort des compiliers:
/home/cache/Desktop/THINFS/THINFS.cpp:39: undefined reference to `THINFS::FileSystem'
 
Zuletzt bearbeitet:
Zurück