Klassen Problem



  • Hi ich habe da ein Problem mit Klassen also ich habe nach aussen ein unterschiedliche Interfaces (reinvirtuelle Klasse) IGraphics und ISwapChain jetzt habe ich noch zwei 'normale Klassen' in denen diese Methoden drin sind.

    Beides sind Render Targets (und von einer gemeinsamen Klasse was erben (imom nur zwei Funktionen, jedoch nur in den Klassen verwendet, nicht in den Interfaces)) und da beide nach aussen auch die gleichen Functionen haben wollte ich die in CRenderTagetn deklarieren aber der Compiler sagt das die in CGRaphics oder ISwap Chain drin sein müssen.

    Ach hier mal der Code:

    class IGraphics {
    
      virtual void TestG(void) = 0;
      virtual void SetBla(void) = 0;
    
    }
    
    class ISwapChain {
    
      virtual void TestSC(void) = 0;
      virtual void SetBla(void) = 0;
    
    }
    
    class CRenderTarget {
    
      void SetBla(void);
    }
    
    class CGraphics : public CRenderTarget, IGraphics {
    
      virtual void TestG(void) { }
    }
    
    class CSwapChain : public CRenderTarget, ISwapChain {
    
      virtual void TestSC(void) { }
    }
    

    Jetzt mecker er das in CGraphics und in CSwap Chain kein SetBla drin ist ich will aber das er das Setbla aus CRenderTarget benutzt.

    Danke

    /edit: Code-Tags repariert



  • du leitest im Moment privat von deinen Interfaces ab, weil kein Zugriffsschlüsselwort dasteht, willst aber wahrscheinlich öffentliche Vererbung:

    class CGraphics : public CRenderTarget, public IGraphics { ...
    


  • Danke aber leider klappt das nicht



  • nur weil CRenderTarget ein SetBla hat, heißt das nicht, das die rein virtuelle Funktion SetBla von IGraphics oder wie auch immer nicht überschrieben werden muss:

    class CGraphics : public CRenderTarget, public IGraphics {
      void SetBla () { 
          CRenderTarget::SetBla(); 
      }
    }
    

    oder du lässt CRenderTarget von IGraphics erben. Oder was ganz anderes...



  • Danke erstmal aber was gibs denn da noch anderes?


Anmelden zum Antworten