nested classes



  • hi,

    wie greife ich auf eine abstrakte methode definierte methode in einer verschachtelten klasse zu?

    template <typename T>
    class BaseClass
    {
      protected
    
      public:
    
        class NestedClass
        {
          public:
    
            virtual bool operator != (const NestedClass &rhs) = 0;
        };
    };
    
    template <typename T>
    class DerivedClass : public BaseClass<T>
    {
      // ???
      bool NestedClass::operator != (const NestedClass &rhs)
      {
      } 
    };
    

    geht sowas ueberhaupt?



  • Du müsstest eine neue innere Klasse erzeugen und diese von der inneren Klasse der Basisklasse ableiten:

    class Base {
      protected:
      class InnerBase { ... };
    };
    
    class Derived : public Base {
      class InnerDerived : public InnerBase { ... };
    };
    

    Das müsste so in etwa funktionieren.



  • kann es sein, dass man operatoren nicht als abstrakt definieren kann?



  • Nein. Es kann sein, dass das nicht sinnvoll ist, aber möglich ist es auf jeden Fall.



  • Hallo,
    ich verstehe zwar dein Problem nicht, die Lösung hat Bashar aber bereits genannt:

    template <typename T> 
    class BaseClass 
    { 
      public: 
    
        class NestedClass 
        { 
          public: 
    
            virtual bool operator != (const NestedClass &rhs) = 0; 
        }; 
    }; 
    
    template <typename T> 
    class DerivedClass : public BaseClass<T> 
    { 
    public:
         struct NestedClass : public BaseClass<T>::NestedClass 
         {
             bool operator !=(const typename BaseClass<T>::NestedClass& rhs)
             {
                  ...
             }
         };
    };
    


  • ahhh...

    bool operator !=(const typename BaseClass<T>::NestedClass& rhs)
    

    ich hatte nur NestedClass statt dem typename BaseClass<T>::NestedClass da stehen.

    jetzt funktioniert es...

    danke!


Anmelden zum Antworten