Funktionsrumpf von ableitender Klasse für "Hauptklasse" erstellen



  • Ist es möglich, einen Funktionsrumpf einer ableitenden Klasse für die "Hauptklasse" zu erstellen?

    So z.B.

    class A : public B {
    //...
    };
    
    class B {
    public:
     void Probe();
    };
    
    //Aufruf
    void A::Probe() {
    //...
    }
    


  • // b.hpp
    class B
    {
    public:
      virtual void Probe() = 0; 
    };
    
    //a.hpp
    class A : public B
    {
    public:
      void Probe();
    };
    
    // a.cpp
    void A::Probe()
    {
      probiere();
    }
    

    Probe ist in B rein virtuell. Da B keine Implementierung für Probe hat ist es eine abstrakte Klasse, die nicht instanziiert werden kann. Die Implementierung von Probe wird durch A (und evtl. andere ableitende Klassen) bereit gestellt.

    void ProbierEs(B& b)
    {
      b.Probe();
    }
    int main()
    {
      // B b; das geht nicht
      A a;
      ProbierEs(a);
      return 0;
    }
    

Anmelden zum Antworten