pure virtual operatoren?



  • Hi Leuts,
    ist es möglich pure virtual operatoren zu definieren? Ich will praktisch eine Interface machen und dann alle abgeleiteten Klassen zwingen, den Operator << zu implementieren

    thx



  • Klar geht das was soll dich denn daran hindern? 🤡

    Gruß



  • Bei operator<< mußt du dazu allerdings einen Umweg nehmen, da du den nicht in deine Klasse einbauen kannst:

    class base
    {
    public:
      virtual void print(ostream& sout) const =0;
    }
    
    ostream& operator<<(ostream& sout,const base& val)
    {
      val.print(sout);
      return sout;
    }
    
    class derived : public base
    {
    public:
      virtual void print(ostream& sout) {...}
    }
    


  • CStoll schrieb:

    Bei operator<< mußt du dazu allerdings einen Umweg nehmen, da du den nicht in deine Klasse einbauen kannst:

    Wer sagt denn, dass Overloader op<< als ostream-op verwenden will :p ;).

    Gruß Caipi


  • Mod

    CStoll schrieb:

    Bei operator<< mußt du dazu allerdings einen Umweg nehmen, da du den nicht in deine Klasse einbauen kannst:

    das hat allerdings nichts mit dem operator selbst zu tun, sondern nur damit, dass er gewöhnlich ostream als linken operand hat. folglich müsste dieser operator ein member von ostream sein - und da wir ostream nicht verändern können, bleibt nur die implementation als freie funktion.


Anmelden zum Antworten