Einlesen von Textdateien und verarbeiten

Ich persoöhnlich bevorzuge fprintf und fscanf bei Textdateien kannst du dir ja acuh mal anschauen.
Obwohl das natürlich ungleich komplizierter und fehleranfälliger ist. Oder weißt du ad hoc ohne Nachzuschauen welchen Formatstring man beim Ausgeben und Einlesen eines float bzw. double nehmen muss? ;-]

Gruß
 
Jetzt ist noch eine Frage abseits des auslesens von Dateien aufgekommen, bei dem es um Objekte geht.
Angenommen ich habe 3 Klassen:

Klasse A
Klasse B
Klasse C

Klasse C besteht nur aus 5 private Variablen und jeweils 5 public Getter- und Setter Methoden um darauf zugreifen zu können.
Klasse A erstellt sich jetzt ein Klasse C Objekt und trägt dort die eingelesenen Werte über die Settermethoden ein. Geht auch toll.

Jetzt kommt Klasse B, in der eigtl die Berechnung stattfinden soll, allerdings komm ich ja jetzt nicht mehr an die Werte dran. Wenn ich wieder ein neues Klasse C Objekt erstelle sind die Werte natürlich weg, aber ohne eines zu erstellen kennt er die GetterMethoden ja nicht.

Muss ich das Objekt aus Klasse A jetzt an Klasse B übergeben ? Oder kann man Methoden anderer Klassen auch aufrufen ohne ein Objekt davon zu erzeugen ?
 
Du könntest Klasse C als friend-class zu Klasse B deklarieren und somit auf dir Privat variablen zugreifen, jedoch benutzt man dies heute eigentlich nichtmehr.
Du kannst dir doch in Klasse A eine Methode schreiben welche den Zeiger auf das Klasse C Objekt liefert und mit diesem in Klasse B arbeiten.


Obwohl das natürlich ungleich komplizierter und fehleranfälliger ist. Oder weißt du ad hoc ohne Nachzuschauen welchen Formatstring man beim Ausgeben und Einlesen eines float bzw. double nehmen muss? ;-]

Gruß
war das jetzt ironisch gemeint oder willst du mich aufn arm nehmen?
 
Zuletzt bearbeitet:
Okay, nun hab ich mich ne Weile mit Zeigern rumgeschlagen und es nun immerhin mal in Klasse A am laufen:

Code:
void Einlesen::speichern(){
     Punkte *newPunkte;
     newPunkte = new Punkte;
     newPunkte->setYA(zeile[0]);
     newPunkte->setXA(zeile[1]);
     newPunkte->setYE(zeile[2]);
     newPunkte->setXE(zeile[3]);
}

Damit hab ich die Punkte jetzt in der anderen Klasse gesetzt.
Nun will ich aus einer dritten Klasse auf diese Punkte zugreifen. Kann ich den Zeiger dann in der dritten Klasse direkt verwenden ? Oder muss ich denn irgendwie übergeben ? Kann man den einfach als Parameter übergeben ? Kriegs nicht so richtig zum laufen :(
 
Du schreibts dir eine Funktion die den Zeiger zutück gibt.
So wie des es allerding ejtzt gemacht hast wird es auch schlecht funktionieren.
Code:
class Einlesen{
private:
     Punkte* Punkte;
     // ......................
public:
     Einlesen();
     ~Einlesen();
     
     // ...................
};


//in der cpp datei

void Einlesen::speichern(){
     Punkte= new Punkte;
     Punkte->setYA(zeile[0]);
     Punkte->setXA(zeile[1]);
     Punkte->setYE(zeile[2]);
     Punkte->setXE(zeile[3]);
}
 
Zuletzt bearbeitet von einem Moderator:
Du schreibts dir eine Funktion die den Zeiger zutück gibt.
So wie des es allerding ejtzt gemacht hast wird es auch schlecht funktionieren.

C++:
class Einlesen{
private:
     Punkte* punkte;
     // ......................
public:
     Einlesen();
     ~Einlesen();
     
     Punkte* get_Puntke();
     // ...................
};


//in der cpp datei

void Einlesen::speichern(){
     punkte = new Punkte;
     punkte->setYA(zeile[0]);
     punkte->setXA(zeile[1]);
     punkte->setYE(zeile[2]);
     punkte->setXE(zeile[3]);
}

Punkte* Einlesen::get_Puntke(){
       return  punkte;
}



// und dann bei klasse B deine berechnungs funktion    
void B::berechene(){
    Punkte* punkte;
    punkte = obj_Einlesen.get_Puntke();
  // und nun kannst du ganz normal weiterarbeiten
  //............
}

Ach und bitte benutze CODE Tags
also ["CODE"] ["/CODE"] oder ["CPP"] ["/CPP"]
ohne " "
 
Zuletzt bearbeitet von einem Moderator:
Code:
void B::berechene(){
    Punkte* punkte;
    punkte = obj_Einlesen.get_Puntke();

Muss ich, um in Klasse B eine Funktion in Klasse Einlesen aufrufen zu können, nicht erst wieder ein Objekt der Klasse Einlesen erzeugen ?
Anders komm ich an die getPunkte() Funktion doch gar nicht ran, oder ?
 
Ja brauchst du.
Dafür habe ich "obj_Einlesen" geschreiben dies wird bei dir ja irgendwo vorhanden sein oder?
Achso und das mit den Code Tags hattest du einmal vergessen und ich hatte nur den in erinnerung und nicht die davor -.-

@ deepthroat da liegst du wohl falsch
 
Zurück