Fehler beim einbinden von <fstream>



  • so... hier erstmal die klasse und die dazugehörige cpp-datei(gekürzt):

    //.h
    
    #include <vector>
    #include <string>
    
    class Base
    {
    	private:
    			std::vector<Sprite> anim;
                            bool readName(std::string& data, int index);
    			bool readRGB(std::string& data, int index);
    			bool readDuration(std::string& data, int index);
    			bool readWidth(std::string& data, int index);
    			bool readHeight(std::string& data, int index);
    	public:
    			bool init( const std::string& filename );
    }
    
    #include <string>
    #include <fstream>             //<- hier stimmt was nicht
    
    using namespace std;
    
    bool AnimationBase::readName(string& data, int index)
    {
            //hier wird der übergebene string zerlegt
    }
    
    bool AnimationBase::readRGB(string& data, int index)
    {
           //s.o.
    }
    
    bool AnimationBase::readDuration(string& data, int index)
    {
    	//s.o.
    }
    
    bool AnimationBase::readWidth(string& data, int index)
    {
    	//s.o.
    }
    
    bool AnimationBase::readHeight(string& data, int index)
    {
    	//s.o.
    }
    
    bool AnimationBase::init( const string& filename)
    {
    	ifstream file (filename.c_str());
    	if(file.is_open())
    	{
    		while(!file.eof())
    		{
    			//hier werden dann die methoden von oben aufgerufen
    		}
    	}
    }
    

    folgendes problem:
    wenn ich <fstream> einbinde, dann kommt ein fehler, dass irgendetwas mit dem namespace nicht stimmt... hier die genaue beschreibung:

    36 C:\DEV-CPP\include\c++\3.4.2\bits\functexcept.h expected unqualified-id before "namespace"
    36 C:\DEV-CPP\include\c++\3.4.2\bits\functexcept.h expected ,' or;' before "namespace"

    wenn ich aber die datei nicht einbinde, dann kommen mehrere fehler und er beschwert sich, dass die methoden nicht statisch sind und er meint, dass string in dem scope nicht bekannt ist... hier die genaue beschreibung:

    8 C:\Programming\Projects\Bomberman\AnimationBase.cpp `bool AnimationBase::readName' is not a static member of `class AnimationBase'
    8 C:\Programming\Projects\Bomberman\AnimationBase.cpp string' was not declared in this scope 8 C:\\Programming\\Projects\\Bomberman\\AnimationBase.cppdata' was not declared in this scope
    8 C:\Programming\Projects\Bomberman\AnimationBase.cpp expected primary-expression before "int"
    (diese meldungen kommen dann für alle einzelnen methoden)

    ich habe schon lange gesucht, aber keinen fehler gefunden... zudem finde ich es komisch, dass beim einbinden von der datei nur der eine fehler kommt und beim nicht einbinden soviele... 🙄

    weiß jemand rat?



  • }
    


  • okay... danke.. das war aber auch ein dummer fehler(ist richtig peinlich)... 🙄

    nun kommt aber ein weiteres problem... wenn ich von der Klasse AnimationBase ein Objekt erzeugen möchte und dann für dieses Objekt die Methode init(const string& filename) aufrufe, dann kommt:

    [Linker error] undefined reference to `AnimationBase::init(std::string const&)'

    wenn ich nur ein Objekt erzeuge, dann kommt kein fehler...dann führt er das programm aus... sobald man aber die methode aufruft, schimpft er....



  • Die Funktion will init(std::string const&) ausführen, die aber anscheinend nur deklariert ist oder du hast die Datei deinem Linker nicht übergeben. Das ist ein Linker Error, er kann die Definition der Methode nicht finden. Das kann an mehreren Gründen liegen.


Anmelden zum Antworten