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?


Anmelden zum Antworten