Abstrakte Klasse vererbt String



  • Hallo,

    ich habe leider noch nicht so viel Erfahrung mit Objekt Orientierung bei C++, komme mehr aus der Java Ecke.
    Ich habe glaube ich ein grundsätzliches Verständnissproblem.

    //Header file: Algorithmus.hpp
    
    #include <string>
    
    class Algorithmus {
    public:
        virtual void execute(std::ifstream source, std::ofstream target) const = 0;
    protected:
        std::string line;
    };
    

    Die Definitions Geschichten hab ich jetzt mal rausgelassen. Dies ist ja nun nach meiner Auffassung eine abstrakte Klasse. Wenn ich diese nun vererbe müssten alle Erben auf den String zugreifen können. Die Methode muss natürlich implementiert werden.

    Das eigentlich Problem ist das wenn ich jetzt in einer geerbten Klasse den String an z.B. getline() weitergeben will ein Fehler auftaucht. Und zwar meint der Compiler der String sei nun vom Typ "std::string Algorithmus::string" und wird somit nicht mehr in der Argumentenliste von getline() angenommen.

    Was übersehe ich? Oder hab ich was falsch verstanden?
    Vielen Dank schonmal. 🙂



  • virtual void execute(std::ifstream source, std::ofstream target) const = 0;

    Ist eine konstante Methode und darf das Objekt nicht ändern. Wenn du nun aber line änderst (indem du es an getline übergibst) schreit dein Compiler dass getline keinen const string& erwartet.

    Immer Compilerfehlermeldung mitposten bitte und im idealfall ein kleines kompilierbares Beispiel.



  • Weiterhin kann man streams nicht als Kopie übergeben. Das müssen Referenzen sein.



  • Danke schön für die schnellen Antworten. Werd mich nächstes mal dran halten 🙂


Anmelden zum Antworten