Seite 1 von 1

Klassen ableiten - Namespace wird nicht gefunden

Verfasst: So Okt 14, 2012 12:38 pm
von naums
Ahoi,

Ich habe wieder mit dem G++ zu kämpfen. Diesmal folgender Code (Auschnitte):

draw-list.h:

Code: Alles auswählen

[..]
#include "draw-basics.h"

namespace list
{
[..]

    class object3d : basics::object3d
    {
        public:
            object3d* next;
            object3d* prev;
    };
}
[..]
draw-basics.h:

Code: Alles auswählen

[..]
#include "draw-list.h"

namespace basics
{

[..]

    class object3d
    {
        private: 
            OBJECT_TYPE type; 
            list::POINT_LIST<list::point3d>* pointlist;
        public: 
            object3d(OBJECT_TYPE t, list::POINT_LIST<list::point3d> pl);
    };
}
[..]
Fehler:
draw-list.h:63: error: 'basics' has not been declared
draw-list.h:63: error: expected '{' before 'object3d'
draw-list.h:64: error: invalid type in declaration before '{' token
draw-list.h:64: warning: extended initializer lists only available with -std=c++0x or -std=gnu++0x
draw-list.h:65: error: expected primary-expression before 'public'
draw-list.h:65: error: expected '}' before 'public'
draw-list.h:65: error: expected ',' or ';' before 'public'
draw-list.h:67: error: expected constructor, destructor, or type conversion before '*' token
Warum findet der den Namespace "basics" nicht? Ich will die Klassen ableiten - ist das erstmal so richtig?

MfG

Re: Klassen ableiten - Namespace wird nicht gefunden

Verfasst: So Okt 14, 2012 12:42 pm
von Kerli
Was mir auf den ersten Blick einmal sehr suspekt ist, ist das siche beide Dateien gegenseitig einbinden...

Re: Klassen ableiten - Namespace wird nicht gefunden

Verfasst: So Okt 14, 2012 12:50 pm
von naums
draw-basics.h braucht die POINT_LIST - Klasse, die in draw-list.h definiert wird, draw-list.h braucht die object2d und object3d-Klassen, die in draw-basics.h definiert werden.

in beiden Dateien steht sowas: (am Bsp. draw-list.h)

Code: Alles auswählen

#ifndef draw_list
#define draw_list

[..]

#endif
Wenn die sich unendlich lange gegenseitig einbinden würden, kämen ja andre Compilerfehler.

MfG

Re: Klassen ableiten - Namespace wird nicht gefunden

Verfasst: So Okt 14, 2012 12:56 pm
von Xin
Kerli hat geschrieben:Was mir auf den ersten Blick einmal sehr suspekt ist, ist das siche beide Dateien gegenseitig einbinden...
Womit sich auch die Fehler erklären.

@naums: Versuch die Abhängigkeiten zu lösen.
Dabei kann Dir hier aber auch keiner helfen, weil keiner weiß, wie die Abhängigkeiten aussehen: Die Dateien sind ja nicht vollständig.
naums hat geschrieben:draw-basics.h braucht die POINT_LIST - Klasse, die in draw-list.h definiert wird, draw-list.h braucht die object2d und object3d-Klassen, die in draw-basics.h definiert werden.
Dann definiere object2d/object3d woanders.
naums hat geschrieben: in beiden Dateien steht sowas: (am Bsp. draw-list.h)

Code: Alles auswählen

#ifndef draw_list
#define draw_list

[..]

#endif
Wenn die sich unendlich lange gegenseitig einbinden würden, kämen ja andre Compilerfehler.
Wenn drawlist sein define setzt und danach basics einbindet und basics sein define setzt und danach drawlist einbindet, dann wird drawlist nicht ein zweites Mal geladen und es geht mit basics weiter. Drawlist hat bis jetzt aber noch nichts definiert... also auch nichts, was bei basic jetzt benötigt würde. => Fehler: undefinerte Klasse...

Solange du nur Zeiger und Referenzen auf eine Klasse benötigst, reicht eine deklaration:

Code: Alles auswählen

namespace basics {
class object3d;
}

namespace list {
...
}