Klasse aufrufen?



  • fehlt dir vielleicht das semikolon hinter der klassendefinition?

    class beispiel {
    
    }; //<---
    


  • Ne des semikolon is da (hab ich nur in dem Beispiel vergessen)! Sonst noch ne Idee??

    Gruß

    SEF



  • Aslo ich hab nu ma noch wat bemerkt: Also de Main merkt schon das die blabla.h da is, und wenn ich nun über meine Klasse mit dem Mauszeigergehe, zeigt er mir auch and as das ne Klasse is! Nun is halt die Frage warum er mir keine neu Variable in meiner Klasse anlegt!!!



  • was meinst du mit "keine neue variable IN meiner klasse anlegt" ?

    du machst eine instanz deiner klasse durch den aufruf

    beispiel mybeispiel;

    beispiel ist ein datentyp, dein selbstdefinierter, und mybeispiel ist der bezeichner des objekts, das du durch die instanzierung anlegst.



  • mmhh... ja es is genau wie du es beschrieben hast! Naja kann ich dir ma meinen Code schicken das du dir des ma anschaust?



  • poste einfach eine abgespeckte form hier..

    einen header mit inhalt
    deine main

    und: die genaue fehlermeldung 😉



  • OK also:

    MAIN

    #include <iostream>
    #include "datafile.h"
    #include <windows.h>
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
        DataFile dfile;
    
        if(!dfile.Load("c:\test.txt"))
        cout << "error";
    
        string strVal;
    
        dfile.GetSetting("Eingabe", strVal);
    
        cout << "Eingabe: " << strVal;
    
        system("PAUSE");
    
        return 0;
    }
    

    Auszug von meiner "datafile.h":

    class DataFile
    	{
    		public:
    			DataFile() { }
    			~DataFile() { }
    
    			// Beschreibung: Datenfile laden
    			// Rückgabewert: true oder false
    			// Parameter: Datei, Trennzeichen
    			bool Load(
    				const std::string &strFilename,
    				const std::string &strSeparators = "\t:=")
    			{
    				m_mSettings.clear();
    
    				std::ifstream file(strFilename.c_str(), std::ios::in);
    
    				if(!file) return false;
    
    				std::string strTemp;
    
    				while(std::getline(file, strTemp))
    				{
    					Trim(strTemp);
    
    					// leerzeilen und kommentare ignorieren
    		            if(
    		            	strTemp.length() > 0 &&
    		            	strTemp[0] != '#' &&
    		             	strTemp[0] != '@' &&
    		              	strTemp[0] != '\n')
    		            {
    						std::vector<std::string> v;
    						Split(strTemp, strSeparators.c_str(), v);
    
    	                    m_mSettings.insert(SettingsList::value_type(v[0], v[1]));
    	                }
    				}
    
    				file.close();
    
    				return true;
    			}
    
    			// Beschreibung: Einstellung holen
    			// Rückgabewert:
    			// Parameter: Name, Referenz auf Objekt
    			template<typename T> void GetSetting(const std::string &strKey, T &t)
    			{
    				SettingsList::const_iterator it = m_mSettings.find(strKey);
    
    				if(it == m_mSettings.end()) return;
    
    				Convert((it)->second, t);
    			}
    
    		private:
    			typedef std::multimap<std::string, std::string> SettingsList;
    
    			SettingsList m_mSettings;
    	};
    

    Und die Fehlemeldung ist:

    'DataFile' undeclared [first use in this function]



  • kann den fehler leider nicht nachvollziehen.

    bei mir mal eben ein projekt angelegt, deine files angelegt, die entsprechenden header inkludiert, und genau datafile.h und eine main hergestellt.

    startet.

    klar, ich habe Trim und so auskommentiert, keine ahnung, wie du das implementiert hast 😉

    hmm, ich fahre visual studio 6, und da klappts.

    frage: sind die pfade alle in ordnung? (aber er müsste schimpfen, fänder er den header nicht)
    zweite frage: hast du wirklich die richtigen dateien offen? manchmal macht man eine von der letzten version auf, die heißen gleich, liegen im anderen ordner?

    nur so zur sicherheit...



  • Ja also ich hab von meiner Seite alles richtig Eingestellt!! mmhh.. ich arbeite mit Dev-C++! Naja kannst du mir ma dein Projekt schicken(oder nen screenshot) das ich ma sehe wie du das bei dir gemacht hast! Also ich verzweifle hier grad echt!!!!

    Gruß

    SEF



  • Hab's grad mal in 4.9.8.0 gepastet - mit Split, Trim & Convert auskommentiert läut's ohne Probleme.
    Ich schätze fast dass elise recht hat und du irgendwo ein Semikolon vergessen hast, vielleicht ne Klammer nicht geschlossen oder so.



  • noch eine idee

    du kennst dich mit dem dev cpp nicht aus, und hast den header nicht
    "DEM PROJEKT HINZUGEFÜGT"

    dann kennt er den header natürlich nicht.



  • doch doch hab ich alles gemacht!



  • dann geb ich auf, im studio gehts, den dev hab ich hier leider nicht.

    leg nochmal ein neues projekt an, und arbeite dich im kleinen hoch, mein tip.
    dann findest du die stelle, die "zer"stört...

    viel glück.



  • mmhh.... gut ok dann werd ich das ma probieren!

    erst ma danke an alle!

    Gruß

    SEF



  • Könntet ihr vielleicht euren Code der datafile.h hier ma reinposten vielleicht finde ich dann den Fehler!!
    Wäre echt nett von euch! Ich nu bei mir au ma die sachcen ausgeklammert so wie ihr das gemacht habt aber immer noch das gleiche Ergebniss

    SEF



  • #include <iostream>
    #include <map>
    #include <fstream>
    #include <string>
    #include <vector>
        class DataFile
        {
            public:
                DataFile() { }
                ~DataFile() { }
    
                // Beschreibung: Datenfile laden
                // Rückgabewert: true oder false
                // Parameter: Datei, Trennzeichen
                bool Load(
                    const std::string &strFilename,
                    const std::string &strSeparators = "\t:=")
                {
                    m_mSettings.clear();
    
                    std::ifstream file(strFilename.c_str(), std::ios::in);
    
                    if(!file) return false;
    
                    std::string strTemp;
    
                    while(std::getline(file, strTemp))
                    {
                       // Trim(strTemp);
    
                        // leerzeilen und kommentare ignorieren
                        if(
                            strTemp.length() > 0 &&
                            strTemp[0] != '#' &&
                             strTemp[0] != '@' &&
                              strTemp[0] != '\n')
                        {
                            std::vector<std::string> v;
                           // Split(strTemp, strSeparators.c_str(), v);
    
                            m_mSettings.insert(SettingsList::value_type(v[0], v[1]));
                        }
                    }
    
                    file.close();
    
                    return true;
                }
    
                // Beschreibung: Einstellung holen
                // Rückgabewert:
                // Parameter: Name, Referenz auf Objekt
                template<typename T> void GetSetting(const std::string &strKey, T &t)
                {
                    SettingsList::const_iterator it = m_mSettings.find(strKey);
    
                    if(it == m_mSettings.end()) return;
    
    //                Convert((it)->second, t);
                }
    
            private:
                typedef std::multimap<std::string, std::string> SettingsList;
    
                SettingsList m_mSettings;
        };
    

Anmelden zum Antworten