Fehler beim Kompilieren
-
Hallo!
Habe folgendes Problem:
Hab ein C++-Projekt, das ich kompilieren will, dabei tritt aber folgender Fehler auf:
19 E:\Projekt_Irrat\source_tmp\periode.h type specifier omitted for parameterIrratNumber' 19 E:\\Projekt\_Irrat\\source\_tmp\\periode.h syntax error before
*' token
42 E:\Projekt_Irrat\source_tmp\periode.hIrratNumber' was not declared in this scope 42 E:\\Projekt\_Irrat\\source\_tmp\\periode.h
irrat_number' was not declared in this scope
42 E:\Projekt_Irrat\source_tmp\periode.h invalid data member initialization
42 E:\Projekt_Irrat\source_tmp\periode.h (use=' to initialize static data members) 42 E:\\Projekt\_Irrat\\source\_tmp\\periode.h variable or field
computePeriodePositions' declared voidDie Files schaun folgendermassen aus:
periode.h:// periode.h #ifndef periode_h___ #define periode_h___ #include "data_new.h" #include "irrat_number.h" #include <vector> using std::vector; class Periode { public: Periode(); Periode(vector<short int> periode, IrratNumber * irrat_number); virtual ~Periode(); int getPeriodeLength(); int getFoundPositionsNum(); uint64 getPeriodePosition(int index); short int getPeriodeDigit(int index); protected: vector<short int> periode_; int periode_length_; vector<uint64> periode_positions_; int found_positions_num_; void computePeriodePositions(IrratNumber * irrat_number); }; #endif // periode.h
irrat_number.h:
// irrat_number.h #ifndef irrat_number_h___ #define irrat_number_h___ #include "data_new.h" #include "periode.h" #include "apfloat.h" #inlude <vector> using std::vector; static const int EULER_NUMBER = 0; static const int PI_NUMBER = 1; static const int SQUARE_ROOT_NUMBER = 2; static const int CUBE_ROOT_NUMBER = 3; class IrratNumber { public: IrratNumber(); virtual ~IrratNumber(); vector<Periode> periode_list_; int periode_num_; virtual void changeLength(uint64 length); virtual void computeNumber(uint64 length); int getBeforComma(); uint64 getLength(); int getNumberType(); short int getDecimalDigit(uint64 index); protected: apfloat decimal_digits_; int befor_comma_; uint64 length_; int number_type_; private: short int * actual_buffer_; short int * old_buffer_; size_t actual_block_; }; #endif // irrat_number.h
Es ist mir nicht ganz klar, wieso der Fehler auftritt, aber ich habe eine Vermutung. "periode.h" inkludiert eigentlich "irrat_number.h" und sollte damit die Klasse IrratNumber kennen. Nun ist es aber so, dass "irrat_number.h" selbst wiederum "periode.h" inkludiert, da ich hier die Klasse Periode brauche. Wenn dadurch ein Konflikt entsteht, wie kann ich den am besten lösen?
Bin dankbar für jede Hilfe.Havaniceday
Christian
-
vorwärtsdeklaration
// periode.h #ifndef periode_h___ #define periode_h___ #include "data_new.h" // #include "irrat_number.h" // in die cpp #include <vector> using std::vector; // vorwärtsdeklaration class IrratNumber; class Periode { public: Periode(); Periode(vector<short int> periode, IrratNumber * irrat_number); virtual ~Periode(); int getPeriodeLength(); int getFoundPositionsNum(); uint64 getPeriodePosition(int index); short int getPeriodeDigit(int index); protected: vector<short int> periode_; int periode_length_; vector<uint64> periode_positions_; int found_positions_num_; void computePeriodePositions(IrratNumber * irrat_number); }; #endif // periode.h