include fehler
-
Hallo,
ich bins schon wieder ;). Ich habe hier glaube ich einen include Fehler, sehe aber die Lösung nicht.
Datei ast.h
#ifndef _AST_H #define _AST_H typedef struct { int aggnum; int varid; } AggFunction; #include "astselect.h" #include <stdint.h> namespace AST { class AST { public: AST(); ~AST(); virtual void createASTfromBitStream(uint8_t* data); ASTSelect getSelectClause(); private: }; //End class } //End namespace #endif /* _AST_H */Datei astselect.h
#ifndef _ASTSELECT_H #define _ASTSELECT_H #include <stdlib.h> #include "ast.h" namespace AST{ class ASTSelect { public: ASTSelect(int numVar, int numAgg); ~ASTSelect(); virtual void addSelectVar(int var); virtual void addSelectAgg(int aggNum, int var); virtual void addSelectAgg(AggFunction agg); virtual void addSelectId(); virtual void addSelectTs(); virtual void addSelectGeo(); virtual int getSelectVarCnt(); virtual int getSelectAggCnt(); virtual int getSelectVar(int i); virtual AggFunction getSelectAgg(int i); virtual bool selectId(); virtual bool selectTs(); virtual bool selectGeo(); private: int* varList; AggFunction* aggList; int varIndex; int aggIndex; bool selectIdFlag; bool selectTsFlag; bool selectGeoFlag; };//End class ASTSelect }//End namespace AST #endif /* _ASTSELECT_H */Der Fehler bezieht sich auf die erste Datei:
In file included from source/ast/astselect.h:13, from source/ast/astselect.cpp:9: source/ast/ast.h:38: Fehler: »ASTSelect« bezeichnet keinen TypWas ist falsch???
uwe
-
Ich glaube, das gegenseitige Including der Header macht hier Ärger. Versuche Vorwärtsdeklarationen zu benutzen und/oder die Abhängigkeiten zu vermindern. Eventuell braucht astselect.h ast.h nicht direkt? Zeit für ein wenig Refaktorisierung...

-
Hallo zusammen,
ich habe das Design geändert
Eine Frage habe ich noch. Ich habe einen Namespace AST und eine Klasse AST(ist sozusagen die Hauptklasse innerhalb des Namespaces). Nun mault er bei der Definition des Konstruktors AST::AST(), dass dieser nicht eindeutig ist:source/ast/ast.cpp:12: Fehler: Referenz auf »AST« ist mehrdeutig source/ast/astselect.h:14: Fehler: candidates are: namespace AST { } source/ast/ast.h:22: Fehler: class AST::ASTKann man dies beheben, oder muß ich die Klasse umbennen?
uwe
-
Geht es mit
AST::AST::AST() {}?
Ansonsten würde ich sowas echt vermeiden. Schreib doch einfach Ast..
rya.
-
hi,
ich nenne den namespace anders, ist wohl das einfachste.
danke. uwe