Klassen in Datespeichern



  • Hallo zusammen ich bin neu hier und in der Branche.
    Ich habe folgendes Problem, ich schreibe mir ein kleines Lager dazu habe ich für das Material eine Klasse angelegt. Nun ist klar das man nicht nur ein Material Spichern will sondern mehr, also habe ich wie ich es aus dem Buch (das ich gerade lese) einen Array vond er Klasse erzeugt (Sry ich weis nicht, wie man das nennt, aber wenn ihr den code sieht, denke ich mal versteht ihr was ich meine). So nun will ich das ganze in einer Datei speichern, aber es kommt immer der Fehler: Fehler 1 error C3867: "std::basic_ofstream<_Elem,_Traits>::close": Dem Funktionsaufruf fehlt die Argumentliste. Verwenden Sie "&std::basic_ofstream<_Elem,_Traits>::close", um einen Zeiger auf den Member zu erstellen.

    Hier ist der code:
    Klasse erstellen:

    class CMaterial
    {
    	public:
    		//Membervariablen
    		int m_Stueck;
    		double m_Preis;
    		char m_Name[60];
    		bool m_Vorhanden;
    		//Memberfunktionen
    		CMaterial();
    
    };
    CMaterial::CMaterial()
    {
    	m_Vorhanden = false;
    }
    

    Zeiger auf die Klasse erzeugen:

    CMaterial *pMat = NULL;
    pMat = new CMaterial[Lagerplaetze];
    

    Schreiben:

    //In die Datei Schreiben
    ofstream Output ("Lager.lg", ios::binary| ios::app);
    Output.write((char*)&pMat[i], sizeof(pMat[i]));
    Output.close;
    

  • Mod

    Klammern bei Funktionaufruf vergessen:
    Output.close();
    Aber close braucht man eigentlich nie. Das macht der Destruktor des Streams schon.



  • Hey Danke 🙂
    hmmm irgent wie ich dumm :D.
    ich rätsel schon seit mehrer Tagen daran, warum es nicht geht und dann ist die Lösung so einfach.



  • Bevor du das nächste Mal wieder Tage mit sowas verbringst (😮 ;)), könntest du einen Blick auf www.cplusplus.com werfen. Die Klassen std::string und std::vector könntest du dir bei Gelegenheit auch mal anschauen!


Anmelden zum Antworten