Compilerfehler: Feld xy hat unvollständigen Typen



  • Hi,
    ich möchte in einer Klasse ein Objekt einer anderer Klasse deklarieren: (Den Code habe ich stark vereinfacht, im Original siehts anders aus)

    #include <string>
    class myIterator; //forward Deklaration
    class myContainer {
          friend class myIterator;
       public:
          myIterator& begin() {return first;}
       private:
          struct node {
             std::string content;
             myIterator next;          // <---  hier beschwert sich der Compiler
          };
          myIterator first;
    };
    
    class myIterator {
       public:
          std::string& operator* () {return p->content;}
       private:
          myContainer::node* p;
    };
    
    int main() {return 0;}
    

    Bei der Deklaration von "myIterator next" sagt der Compiler "Feld next hat unvollständigen Typen". Was mache ich falsch ??



  • Forward-Deklarationen gehen nur, wenn du bis zur richtigen Definition nur Pointer verwendest. Denn ansonsten kann der Compiler die Größe des Objekts nicht bestimmen. Und die ist bei Pointern ja egal.



  • Das Ding compiliert, danke !!! 🙂


Log in to reply