Probleme bei Nutzung von #define / #pragma once
-
Hallo Zusammen!
Folgendes Problem:
Ich habe folgenden Quellcode (Auszüge)Datei SpekData.h / Klasse SPEK
#ifndef SPEKD_H #define SPEKD_H #include "PeakData.h" #include "Smooth.h" using namespace System; using namespace System::Collections; using namespace System::Drawing; //#pragma once ref class SPEK { //Attribute der Klasse private: //Attribute der Klasse (unrelevant) public: //Informationen zu den Daten System::Drawing::Color color; /* Deklaration der Objekte als public um Zugriff auf (öffentliche) Methoden der Klassen gewährleisten zu können */ PeakData ^peak; Smooth ^smooth; //Und so weiter }; #endif
Datei PeakData.h / Klasse PeakData
#ifndef PEAKD_H #define PEAKD_H #include "PointComparer.h" #include "SpekData.h" using namespace System; using namespace System::Collections; using namespace System::Drawing; ref class PeakData { private: // Attribute der Klasse PointComparer ^comparer; //Comparer SPEK ^spek; [b]// error C2143[/b] //Und so weiter }; #endif
Datei Smooth.h / Klasse Smooth
#ifndef SMOOTH_H #define SMOOTH_H #include "SpekData.h" using namespace System; using namespace System::Collections::Generic; //#pragma once ref class Smooth { private: /* Listen für Koeffizienten */ List<double> ^h; List<double> ^e; List<double> ^u; List<double> ^r; List<double> ^k; //Objekt der Klasse SPEK SPEK ^spek; [b]// error C2143[/b] //Und so weiter }; #endif
Der Fehler den der Compiler an den hervorgehobenen Stellen zu bemängeln hat lautet:
error C2143: Syntaxfehler: Es fehlt ';' vor '^'
Wenn ich in der Klasse SPEK sowohl
#include "PeakData.h" / #include "Smooth.h"
als auch
PeakData ^peak; Smooth ^smooth;
auskommentiere werden keine Fehler angezeigt.
Das Benutzen von
#pragma once
anstatt
#ifndefine / #define / #endif
führt wiederrum zum
"Schwerwiegendenden Fehler C1014" ("Die Schachtelung von #include-Direktiven hat die zulässige Tiefe überschritten.")
Was kann ich nun noch machen um sowohl in der Klasse SPEK die Klassen Smooth und PeakData als auch in den Klassen Smooth und PeakData die Klasse SPEK nutzen zu können?