[Gelöst] Objekte in std::vector speichern, wie geht das?



  • Evolykane schrieb:

    Wegen

    lines<actuallline>.toelements();
    

    in meinem Code gab es abermillionen von Fehlermeldungen.

    Zu recht. Soll das vielleicht lines[actualline].toelements(); heißen? BTW aktuell heißt auf Englisch nicht actual, sondern current.



  • Bashar schrieb:

    Soll das vielleicht lines[actualline].toelements(); heißen?

    Hab ich gerade probiert, funktioniert nicht.
    Hier die Klassen die mit dem Vectorproblem zu tun haben.

    //file.hpp
    #ifndef FILE_HPP_
    #define FILE_HPP_
    #include <string>
    #include <vector>
    #include "line.hpp"
    class File
    { 
    	private:
    		std::vector<Line> lines;
    		int actuallline;
    	public:
    		File();
    		void takechar(char _zeichen);
    };
    #endif
    
    //file.cpp
    #include "file.hpp"
    #include "line.hpp"
    File::File()
    {
    	actuallline = 0;
    }
    void File::takechar(char _zeichen)
    {
    	if(_zeichen == '\n')
    	{
    		lines<actuallline>.toelements();
    		actuallline++;
    	}
    	else
    	{
    		lines<actuallline>.takechar(_zeichen);
    	}
    }
    
    //line.hpp
    #ifndef LINE_HPP_
    #define LINE_HPP_
    #include <string>
    #include <vector>
    class Line
    { 
    	private:
    		std::vector<std::string> elements;
    		std::string oldline;
    	public:
    		void takechar(char _zeichen);
    		void toelements();
    };
    #endif
    
    //line.cpp
    #include "line.hpp"
    void Line::takechar(char _zeichen)
    {
    	oldline += _zeichen;
    }
    void Line::toelements()
    {
    
    }
    


  • Evolykane schrieb:

    Bashar schrieb:

    Soll das vielleicht lines[actualline].toelements(); heißen?

    Hab ich gerade probiert, funktioniert nicht.

    Fehlerbeschreibung?

    Hier die Klassen die mit dem Vectorproblem zu tun haben.

    Nichts offensichtliches zu sehen. (Außer natürlich der Blödsinn mit den <...>-Klammern.)



  • Errorlog: http://pastebin.com/ag51B5Tw
    Zu den [] soweit ich weiß sind die eckigen Klammern für Arrays zu benutzen und <> für std::vector weil das ein template ist oder so.



  • Evolykane schrieb:

    soweit ich weiß sind die eckigen Klammern für Arrays zu benutzen und <> für std::vector

    Das ist Unsinn.



  • Evolykane schrieb:

    Zu den [] soweit ich weiß sind die eckigen Klammern für Arrays zu benutzen und <> für std::vector weil das ein template ist oder so.

    Na, wenn du alles schon weißt, warum fragst du dann hier? Hier laufen nur die Idioten rum, die [] benutzen würden.



  • Evolykane schrieb:

    Errorlog: http://pastebin.com/ag51B5Tw

    Ich meinte den Fehler, NACHDEM du die <...> durch [...] ersetzt hast.



  • http://pastebin.com/wfs6jn29
    Ich mach es dann doch lieber mit Arrays, wie bekommt man die Anzahl der Zeilen einer Datei?



  • Evolykane schrieb:

    http://pastebin.com/wfs6jn29

    Verarschen kann ich mich alleine.

    File/file.cpp: In member function ‘void File::takechar(char)’:
    File/file.cpp:16:8: error: no match for ‘operator<’ (operand types are ‘std::vector<Line>’ and ‘int’)
       lines<actuallline>.takechar(_zeichen);
            ^
    


  • *facepalm* stimmt ja es waren 2 Methodenaufrufe.
    Vielen Dank das du mich darauf aufmerksam gemacht hast, jetzt gibt es keinen Fehler mehr in den beiden Klassen.


Anmelden zum Antworten