problem mit klasse



  • also ich schreibe zur Zeit eine Klasse zum Speichern von Daten in Dateien:

    #include <fstream>
    #include <iostream>
    using namespace std;
    
    class save_to //Mit dieser Klasse kann man Variabel während der Laufzeit einfach und bequem Daten in .ini Dateien saven
    { 
    private:
    	FILE* data_list;
    	int SIZE;
    	int list[1000];
    	char *data_input;
    	int array_save[SIZE];
    	int array_field_number;
    	int array_value;
    public:
    	virtual ~ save_to() { delete [] data_input;} //Gebe speicher für data_input wieder frei
    	int save_to_file() 
    	{
    		data_input = new char[100];
    		cin>>data_input;
    		data_list = fopen("list.ini","a+");
    		fprintf(data_list,"\n%s", data_input);
    		fclose(data_list);
    		return 0;
    	};
    	void get_array_size()    //Die größe des Arrays festlegen
    	{
    		cin >> SIZE;
    	};
    	void get_array_field_number()   //Den Feldwert des Arrays festlegen
    	{
    		cin >> array_field_number;
    	};
    	void get_array_value() //Der Wert der eingetragen wird
    	{
    		cin >> array_value;
    	};
    };
    

    und ich habe dabei folgendes problem:

    ich bekomme folgende Fehler:#
    c:\Dokumente und Einstellungen\Infernion\Eigene Dateien\Visual Studio Projects\classtests\classes.cpp(14) : error C2327: 'save_to::SIZE': Ist kein Typname, nicht statisch und kein Enumerator
    c:\Dokumente und Einstellungen\Infernion\Eigene Dateien\Visual Studio Projects\classtests\classes.cpp(14) : error C2065: 'SIZE': nichtdeklarierter Bezeichner
    c:\Dokumente und Einstellungen\Infernion\Eigene Dateien\Visual Studio Projects\classtests\classtests.cpp(28) : error C2248: 'save_to::array_save': Kein Zugriff auf private Element, dessen Deklaration in der Klasse "save_to" erfolgte
    c:\Dokumente und Einstellungen\Infernion\Eigene Dateien\Visual Studio Projects\classtests\classes.cpp(14): Siehe Deklaration von 'save_to::array_save'
    c:\Dokumente und Einstellungen\Infernion\Eigene Dateien\Visual Studio Projects\classtests\classes.cpp(8): Siehe Deklaration von 'save_to'
    c:\Dokumente und Einstellungen\Infernion\Eigene Dateien\Visual Studio Projects\classtests\classtests.cpp(28) : error C2065: 'array_field_number': nichtdeklarierter Bezeichner

    ich hoffe ihr könnt mir sagen wie ich die fehler behebe

    MFG travis



  • ⚠ aaarg c/c++ mix !



  • machs so

    class save_to //Mit dieser Klasse kann man Variabel während der Laufzeit einfach und bequem Daten in .ini Dateien saven
    {
    private:
        FILE* data_list;
        int SIZE;
        int list[1000];
        char *data_input;
        int array_save[SIZE];
        int array_field_number;
        int array_value;
    public:
        virtual ~ save_to() { delete [] data_input;} //Gebe speicher für data_input wieder frei
        int save_to_file()
        {
            data_input = new char[100];
            cin>>data_input;
            data_list = fopen("list.ini","a+");
            fprintf(data_list,"\n%s", data_input);
            fclose(data_list);
            return 0;
        }
        void get_array_size()    //Die größe des Arrays festlegen
        {
            cin >> SIZE;
        }
        void get_array_field_number()   //Den Feldwert des Arrays festlegen
        {
            cin >> array_field_number;
        }
        void get_array_value() //Der Wert der eingetragen wird
        {
            cin >> array_value;
        }
    };
    

    edit: ja und SIZE muss konstant sein



  • SIZE muss ein konstante sein...
    ------------------------------
    Uhhh da gibts aber noch vieles zu bemängeln ...



  • gibts nicht ne möglichkeit nen array anzuschaffen der keine konstante größe hat?



  • Doch schon 😃 Musst es aber dann mit new dynamisch allozieren sowie du es schon bei data_input machst...

    Müsstest du dann einen Konstruktor bereitstellen der diese Sachen für dich übernimmt und nicht vergessen Speicher wieder freizugeben...

    Überdenke dein Design nochmal ein wenig und deine ganzen get_* Methoden sollte mit set_ anfangen, weil du ja dort was setzt...

    Da sind noch ein paar Sachen aber das überlass ich dir damit du ja auch was draus lernst 😉 ach und benutze lieber für den I/O von Dateien auch C++ Streams 😃



  • Freak_Coder schrieb:

    Doch schon 😃 Musst es aber dann mit new dynamisch allozieren sowie du es schon bei data_input machst...

    Nö, mit std::vector muß er kein new hinschreiben.


Anmelden zum Antworten